我有
public class MyClass1 { public string Name; public string Address; } public class MyClass2 { public int Id; public string Name; public string Address; } var a = new MyClass1 {Name="SomeName",Address="SomeAddress" };
我不想这样做
b.Name = a.Name; b.Address = a.Address
因为我有30多个领域.
我想要的是:
MyClass2 b = a;
解决方法
你想要的是不可能的.我建议你
AutoMapper允许你定义一个映射:
Mapper.CreateMap<MyClass1,MyClass2>();
然后在这两个类的实例之间进行映射:
var a = new MyClass1 { Name = "SomeName",Address = "SomeAddress" }; var b = Mapper.Map<MyClass1,MyClass2>(a);
作为奖励,您将能够执行以下操作:
IEnumerable<MyClass1> list1 = ... IEnumerable<MyClass2> list2 = Mapper.Map<IEnumerable<MyClass1>,IEnumerable<MyClass2>>(list1);
另一种可能性是使用反射来遍历源对象的所有属性并将它们设置在目标对象中但是为什么在存在像AutoMapper这样的优秀工具时重新发明轮子?