繁体   English   中英

在C#中将值从一个businesobject复制到另一个而没有循环

[英]Copy values from one businesobject to another without loop in c#

我在C#中有两个具有相同字段和属性,但名称空间不同的业务对象。

namespace B1
{
   class myClass
   {
     public string Name{get;set;}
     public int Age{get;set;}
   }
}


namespace B2
{
   class myClass
   {
     public string Name{get;set;}
     public int Age{get;set;}
   }
}

现在,我想将值从业务对象复制到另一个对象。

B1.myClass b1 = new B1.myClass{name="John", Age=18};
B2.myClass b2;

如何将b2的属性值设置为与b1相同?

我有一种方法,但是我不想要它,因为我的业务对象具有超过50个属性。

b2 = new B2.myClass{Number=b1.Number, Age=b1.Age}

这听起来像是Automapper的工作,旨在解决这个问题。

我建议使用自动映射器 ,如果您具有匹配的属性,它将极大地帮助您。 但是,如果您需要在没有外部工具的情况下执行此操作,则可以使用反射来枚举属性:

var b1Properties = b1.GetType().GetProperties();
foreach (var b1Property in b1Properties)
{
     var b2Property = b2.GetType().GetProperty(pi.Name);
     b2Property.SetValue(b2, b1Property.GetValue(b1));
}

另外,您可以在一个采用另一个类的实例的类上创建一个构造函数,然后在此处设置属性。 这对于不具有相同属性名称的类也适用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM