将一个对象转换为另一个

Quo*_*ter 5 c# casting

我有两个用户定义的CLR对象,它们是相同的,只是名称不同,例如这段代码:

public class Person
{
  public string Name { get; set; }
  public string Address { get; set; }
  public string LastName { get; set; }
  public string ETC { get; set; }
}

public class PersonData
{
  public string Name { get; set; }
  public string Address { get; set; }
  public string LastName { get; set; }
  public string ETC { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过从这些CLR中的任何一个创建一个对象,然后逐个传递所有属性来完成.

但还有另一种方式吗?我有一些相当大的CLR,15个属性.

[编辑] 更多上下文.那里的课程已经存在.我使用数据库生成了一个模型EntityFramework.数据库与类几乎完全相同.

此外,它已经存在很多代码.这些类也继承了几个接口等.现在重构不是一个选项,所以我现在正在寻找一个简单的解决方案.

Eli*_*nti 8

假设您不希望两个类都从接口继承,您可以尝试Automapper它是一个自动映射类似类的库.


Ren*_*nan 5

如果您是这些类的作者,您可以让它们实现相同的接口,或者更好的是,从相同的类继承。这样您就不必将值从一个复制到另一个 - 只需使用对其父类型的引用。请记住,拥有几个具有完全相同成员的不相关类型是一个明确的迹象,表明您需要尽快重新考虑您的设计。