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

时间:2009-05-20 19:51:52

标签: c# .net

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

5 个答案:

答案 0 :(得分:5)

是的,请查看Automapper

答案 1 :(得分:2)

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

DestType clone = PropertyCopy<DestType>.CopyFrom(original);

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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