繁体   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