0

My class format:

public class StatusViewModel
{
    public int StatusCode { get; set; }
    public string Message { get; set; }
}

public class SendCheckBillViewModel
{
    public StatusViewModel StatusViewModel { get; set; }
    public List<GetCheckBillViewModel> GetCheckBillViewModel { get; set; }
}

public class GetCheckBillViewModel
{
    public string ProductCode { get; set; }
    public string ProductName { get; set; }
}

My problem is how to set value in c#. I have tried this pattern:

var v = new SendCheckBillViewModel(); 
v.StatusViewModel.StatusCode = 200;
v.StatusViewModel.Message = "";
v.GetCheckBillViewModel.AddRange(viewList);

But the value is not set in my SendCheckBillViewModel class. Can anyone help explain to me why this approach doesn't work?

theduck
  • 2,589
  • 13
  • 17
  • 23
Mahfuz Morshed
  • 108
  • 2
  • 9

2 Answers2

0

you also need to create instances of StatusViewModel and GetCheckBillViewModel before setting any value.

var v = new SendCheckBillViewModel(); 
 v.StatusViewModel = new StatusViewModel();
 v.GetCheckBillViewModel = new List<GetCheckBillViewModel>();

 v.StatusViewModel.StatusCode = 200;
 v.StatusViewModel.Message = "";
 v.GetCheckBillViewModel.AddRange(viewList);
Serkan Arslan
  • 13,158
  • 4
  • 29
  • 44
0

StatusViewModel and GetCheckBillViewModel are class and List, they need to be instanced/initiated. You can do it in-line

public class SendCheckBillViewModel
{
    public StatusViewModel StatusViewModel { get; set; } = new StatusViewModel();
    public List<GetCheckBillViewModel> GetCheckBillViewModel { get; set; } = new List<GetCheckBillViewModel>();
}
Guy
  • 46,488
  • 10
  • 44
  • 88
  • public StatusViewModel StatusViewModel { get; set; } = new StatusViewModel(); public List GetCheckBillViewModel { get; set; } = new List(); – Mahfuz Morshed Nov 19 '19 at 06:25
  • Why use this pattern. can u brief me? – Mahfuz Morshed Nov 19 '19 at 06:26
  • 2
    @MahfuzMorshed IMHO this is the cleanest way. You don't have to use it, you can do it in `SendCheckBillViewModel` constructor or like suggested in the other answer. But you do have to do the initialization somewhere. – Guy Nov 19 '19 at 06:30