簡體   English   中英

C#基於Parent對象初始化子類

[英]C# Initialize Subclass based on Parent object

所以基本上我有這個

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 /刪除屬性到父類,我不必修改我的子類? 或者其他的東西?

看看Automapper

您可以在基類上創建構造函數,然后從繼承者調用它,如下所示:

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

對不起,沒有捷徑。

我經常希望有。 我很久以前開始使用COBOL進行編程,它有一個MOVE CORRESPONDING語句,用於將同名的成員從一個記錄移動到另一個記錄。 從那時起,我就用我所使用的每種語言都希望如此。

您可以使用屬性標記可復制屬性,並反射性地嘗試分配它們。 這不是最好的方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM