如何将基类对象的属性复制到子类对象

时间:2019-05-09 08:08:19

标签: c#

考虑以下两个类别:

public class AAA{
   string _Test1;
   public string Test1{
   get=>_Test1;
   set{_Test1=value;}
   }
}

public class BBB:AAA{
  string _Test2;
   public string Test2{
   get=>_Test2;
   set{_Test2=value;}
   }
}

这是对象:

AAA aaa=new AAA(){Test1="123"};
BBB bbb=new BBB(){Test2="456"};

我想将aaa的所有值复制到子类bbb

实际上,基类对象中有很多属性,我不想手动复制值:

bbb.Test1=aaa.Test1;


我该怎么办?你能帮我吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用reflection进行此操作:

foreach (var field in typeof(AAA).GetFields())
{
    field.SetValue(bbb, field.GetValue(aaa));
}

想法是遍历AAA中所有类型bbb的字段,并为其分配在aaa中具有的值。请注意,这仅适用于字段。如果您还想复制属性的值,则可以将其扩展为也使用.GetProperties()方法。