我有两个对象(WS.Customer和EF.Customer)。原因是我的供应商没有公开其对象中的所有字段(WS.Customer),我需要插入并更新到这些字段中。
我需要合并WS.Customer - > EF.Customer和以后合并EF.Customer - > WS.Customer。 EF.Customer将有一些WS.Customer不会有的额外字段,但是当字段名称匹配时 - 我希望合并的值。
我也只想合并目标字段为空的值,为空,或者在Guid的情况下合并默认值。
我知道我可以使用Linq查询每个对象并构建另一个对象,但是有一种不那么冗长的做事方式吗?我还有其他一些我需要使用这种方法的对象,并且不想花几周打字。
由于
答案 0 :(得分:2)
您可以使用其中一个可用的对象 - 对象映射器库,如AutoMapper或EmitMapper。如果配置正确,它们将负责双向复制数据并跳过字段。例如,使用EmitMapper,您的代码可能如下所示:
ObjectMapperManager.DefaultInstance
.GetMapper<WS.Customer, EF.Customer>(<your configuration object here>)
.Map(customerSource, customerDestination);
答案 1 :(得分:1)
“合并”是什么意思?我猜你需要从一个实例“翻译”到另一个实例,即当名称和属性类型匹配时复制值。请看一下ServiceStack中提供的实现,即对象的扩展方法 - TranslateTo方法:https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.Common/ReflectionExtensions.cs#L31