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