c# - 如果一个对象具有相同的接口(interface),是否可以动态地将一个对象的内容复制到另一个对象?

标签 c# .net

例如,如果我有两个对象,一个是 Monkey 类型,另一个是 Dog 类型,并且它们都实现了 IAnimal,就像这样:

interface IAnimal
{
  int numberOfEyes {get; set;}
  string name {get; set;}
}

我想做这样的事情:

Monkey monkey = new Monkey() { numberOfEyes = 7, name = "Henry" };
Dog dog = new Dog();
MyFancyClass.DynamicCopy(monkey, dog, typeof(IAnimal));
Debug.Assert(dog.numberOfEyes == monkey.numberOfEyes);

我想可以使用反射创建一个像 MyFancyClass 这样的类...任何聪明的人都有想法吗?

谢谢, 斯蒂芬

最佳答案

只是把它混在一起...你也可以使用 AutoMapper将一个对象映射/复制到另一个对象....他们甚至不必实现相同的接口(interface)。要使其自动运行,只需匹配属性的名称,然后您只需执行以下操作即可:

Mapper.Map<IAnimal, MyClass>(myInstance);

关于c# - 如果一个对象具有相同的接口(interface),是否可以动态地将一个对象的内容复制到另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3319240/

相关文章:

c# - 在浏览器中打开 Word 文档并进行内联编辑

.net - 将空列表或 null 值绑定(bind)到存储过程 (.NET) 上的表值参数

c# - 具有对象类型支持的 .Net 第三方 Oracle 提供程序

c# - AWS CloudWatch 日志记录在一台机器上运行,而不是在另一台机器上

c# - ReactiveUI TwoWay 绑定(bind)一个复选框

c# - 为什么我的 INT 变量是通过引用传递的? C#

c# - 如何在没有语法 11 错误的情况下在 vb.net 中的 SQL 查询中使用可变日期

.net - 使用 WCF 的契约优先 SOA

c# - 在 .NET 中忽略 DST(夏令时)

c# - 为什么 C# ProcessStartInfoRedirectStandardOutput 会导致 xcopy 进程失败