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

时间:2010-05-21 19:16:36

标签: 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 = ticket.TicketNumber;
    ...a bunch more lines of code..

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

如何实例化属性而不必像这样编写所有行

this.TicketNumber = ticket.TicketNumber;

有某种捷径吗?类似于子类构造函数的东西?

this = ticket; 

显然这不起作用,但是它们是某种方式,所以如果addng /删除属性到父类,我不必修改我的子类?还是什么?

4 个答案:

答案 0 :(得分:5)

查看Automapper

答案 1 :(得分:2)

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

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;
     }
}

答案 2 :(得分:0)

抱歉,没有捷径。

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

答案 3 :(得分:0)

您可以使用属性标记可复制属性,并反射性地尝试分配它们。这不是最佳方式。