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 SelectL开发者_StackOverflowist 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?
Have a look at Automapper
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;
}
}
Sorry, there's no shortcut.
I frequently wish there were. I started programming with COBOL ages ago, and it had a MOVE CORRESPONDING
statement for moving the same-named members from one record to another. I've wished for that in every language I've used since then.
You can mark the copy-able properties with an attribute and reflectively attempt to assign them. It's not the best way to go about it.
精彩评论