开发者

C# Initialize Subclass based on Parent object

开发者 https://www.devze.com 2022-12-31 11:49 出处:网络
So basically I have this public class Ticket{ public TicketNumber {get; set;} ..a bunch more properties...

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.

0

精彩评论

暂无评论...
验证码 换一张
取 消