我在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}
答案 0 :(得分:2)
这听起来像Automapper的工作,这是为解决这个问题而编写的。
答案 1 :(得分:2)
我建议使用Automapper,如果您有匹配的属性,这将极大地帮助您。 但是,如果您需要在没有外部工具的情况下执行此操作,则可以使用反射来枚举属性:
var b1Properties = b1.GetType().GetProperties();
foreach (var b1Property in b1Properties)
{
var b2Property = b2.GetType().GetProperty(pi.Name);
b2Property.SetValue(b2, b1Property.GetValue(b1));
}
答案 2 :(得分:1)
或者,您可以在其中一个类上创建一个构造函数,该类接受另一个类的实例,然后在那里设置属性。这适用于没有相同属性名称的类。