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酷!