[英]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.