我有
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 这样出色的工具,为什么还要重新发明轮子呢?
关于c# - 通过强制转换在 2 个类之间传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136812/