Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Initialize Subclass based on Parent object

So basically I have this

public class Ticket{
    public TicketNumber {get; set;}
    ..a bunch more properties...
}

I want to add some properties using a subclass like this using subsumption instead of composition.

public class TicketViewModel(Ticket ticket){
    //set each property from value of Ticket passed in
    this.TicketNumber = ticket.TicketNumber;
    ...a bunch more lines of code..

    //additional VM properties
    public SelectList TicketTypes {get; private set;}
}

How do I instantiate the properties without having to write all the lines like this

this.TicketNumber = ticket.TicketNumber;

Is there some kind of shortcut? Something like in the subclass constructor?

this = ticket; 

Obviously this doesn't work but is their some way so I don't have to modify my subclass if addng/removing a property to the parent class? Or something?

like image 720
ctrlShiftBryan Avatar asked Jan 23 '23 00:01

ctrlShiftBryan


2 Answers

Have a look at Automapper

like image 135
Noel Kennedy Avatar answered Jan 27 '23 12:01

Noel Kennedy


You can create a constructor on your base class and then call that from the inheritor, like this:

public class Ticket{
    public string TicketNumber {get; set;}
    ..a bunch more properties...

    public Ticket (string ticketNumber, a bunch more values) {
         this.TicketNumber = ticketNumber;
         // a bunch more setters
    }
}

Then in your inheriting class simply do:

public class TicketViewModel : Ticket {
     public string SomeOtherProperty { get; set; }

     public TicketViewModel(string ticketNumber, ..., string someOtherProperty)
          : base(ticketNumber, ....) 
     {
          this.SomeOtherProperty = someOtherProperty;
     }
}
like image 39
Thomas Avatar answered Jan 27 '23 12:01

Thomas