从具有相同属性的另一个对象创建对象

我在C#中有一个对象,让我们说20个属性,它是datacontract的一部分。 我还有另一个具有类似属性的业务实体,我想从响应对象中填充它。 除了将一个对象的每个属性分配给另一个对象的相应属性之外,有没有办法做到这一点?

是的,看看Automapper

MiscUtil有一个答案( PropertyCopy ),它使用Expression (.NET 3.5)和一个静态字段来缓存已编译的委托(因此每次调用的成本可以忽略不计):

 DestType clone = PropertyCopy.CopyFrom(original); 

如果您使用2.0,那么reflection可能是您的朋友。 如果需要,可以使用HyperDescriptor来提高性能。

如果您希望以自动方式执行reflection,则可以选择reflection,前提是属性名称可以在对象之间轻松映射。

Automapper值得一试,但最后,我认为它不适合我。 这些工具的一个大问题是,每次映射发生时都会产生大量的运行时开销。 上周我问了同样的问题,最后我推出了自己的解决方案(看看接受的答案)。 你可以自由修改我提供的来源,我没有声称它的有效性,适用性,性能,你打破它你保持片断等等,但它运作良好为我创建设计时对象到对象映射。

C#Object Clone Wars可能是一个很好的起点。