簡體   English   中英

在2個繼承的類之間復制屬性的值

[英]Copy property's values between 2 inherited classes

假設我有兩個類:A和B.

public class A
{
public string p1{get;set};
public string p2{get;set};
}

public class B : A
{
public string p3{get;set};
}

我有一個來自A類的對象'a',我想從B類創建一個對象'b',它復制'a'中的所有屬性值。 通常,我必須這樣做:

B b = new B();
b.p1 = a.p1;
b.p2 = a.p2;

使用此解決方案,如果必須手動分配,我必須丟失許多代碼。 有什么解決方案嗎? 謝謝。

您可以考慮使用http://automapper.codeplex.com/這樣的東西,它會使用預定義的規則自動將源對象的屬性映射到目標對象。

然后就像配置一樣簡單:

Mapper.CreateMap<A, B>();

並創建這樣的新對象:

B b = Mapper.Map<B>(a);
  1. 如果您願意,可以使用反射編寫自己的保濕器,以便比較對象屬性,名稱和類型。

  2. 或者您可以使用另一個答案中提到的automapper。

  3. 第三種解決方案是在代碼中內化自適應。 由於“B”知道“A”,所以

      public class B : A { public string p3{get;set}; public void Hydrate{A a} { this.p1 = a.p1; this.p2 = a.p2; } } 

    然后你的代碼將是這樣的

      B b = new B(); b.Hydrate(a); 

暫無
暫無

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

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