C#基于父对象初始化子类

C#基于父对象初始化子类,c#,initialization,subclass,C#,Initialization,Subclass,所以基本上我有这个 public class Ticket{ public TicketNumber {get; set;} ..a bunch more properties... } 我想使用这样的子类添加一些属性,使用包含而不是组合 public class TicketViewModel(Ticket ticket){ //set each property from value of Ticket passed in this.TicketNumber

所以基本上我有这个

public class Ticket{
    public TicketNumber {get; set;}
    ..a bunch more properties...
}
我想使用这样的子类添加一些属性,使用包含而不是组合

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;}
}
我如何实例化属性而不必像这样写所有的行

this.TicketNumber = ticket.TicketNumber;
有什么捷径吗?类似于子类构造函数中的内容

this = ticket; 

显然,这不起作用,但这是它们的某种方式,因此如果向父类添加/删除属性,我不必修改我的子类?还是什么?

对不起,没有捷径


我经常希望有。很久以前我就开始用COBOL编程了,它有一个
MOVE对应的
语句,用于将相同的命名成员从一个记录移动到另一个记录。从那以后,我在使用的每种语言中都希望如此。

看一看

你可以用一个属性标记可复制的属性,然后反射性地尝试分配它们。这不是最好的方法。

您可以在基类上创建一个构造函数,然后从继承器调用它,如下所示:

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
    }
}
然后在继承类中,只需执行以下操作:

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

     public TicketViewModel(string ticketNumber, ..., string someOtherProperty)
          : base(ticketNumber, ....) 
     {
          this.SomeOtherProperty = someOtherProperty;
     }
}

难道不能通过反思来完成吗?我现在没有充分使用Type对象来模拟工作代码,但是如果您只是匹配属性名和类型,我想您可以这样做。不过,我不会真的去做。Ew.+1:Ta!。。。我正在开发自己的对象映射器。不知道其他人已经做了一个…:D酷!