合并不同类型的对象

时间:2013-07-13 20:46:58

标签: c#

我有两个对象(WS.Customer和EF.Customer)。原因是我的供应商没有公开其对象中的所有字段(WS.Customer),我需要插入并更新到这些字段中。

我需要合并WS.Customer - > EF.Customer和以后合并EF.Customer - > WS.Customer。 EF.Customer将有一些WS.Customer不会有的额外字段,但是当字段名称匹配时 - 我希望合并的值。

我也只想合并目标字段为空的值,为空,或者在Guid的情况下合并默认值。

我知道我可以使用Linq查询每个对象并构建另一个对象,但是有一种不那么冗长的做事方式吗?我还有其他一些我需要使用这种方法的对象,并且不想花几周打字。

由于

2 个答案:

答案 0 :(得分:2)

您可以使用其中一个可用的对象 - 对象映射器库,如AutoMapperEmitMapper。如果配置正确,它们将负责双向复制数据并跳过字段。例如,使用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