[英]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);
如果您願意,可以使用反射編寫自己的保濕器,以便比較對象屬性,名稱和類型。
或者您可以使用另一個答案中提到的automapper。
第三種解決方案是在代碼中內化自適應。 由於“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.