在2个继承的类之间复制属性的值

时间:2013-08-07 02:52:26

标签: c# .net

假设我有两个班级:A&乙

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;

使用此解决方案,如果必须手动分配,我必须丢失许多代码。有什么解决方案吗?感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用类似http://automapper.codeplex.com/的内容,使用预定义规则自动将源对象的属性映射到目标对象。

然后就像配置一样简单:

Mapper.CreateMap<A, B>();

创建这样的新对象:

B b = Mapper.Map<B>(a);

答案 1 :(得分:0)

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