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

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...