微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 通过强制转换在2个类之间传递值

我有

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这样的优秀工具时重新发明轮子?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐