合并不同类型的对象

本文关键字:对象 同类型 合并 | 更新日期: 2023-09-27 18:22:17

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

我需要合并WS-Customer->EF.Customer,然后合并EF.Customer->WS.Customer.EF.Customers将有一些WS-Customer没有的额外字段,但当字段名称匹配时,我希望合并这些值。

我还只想合并目标字段为null、空或Guid为默认值的值。

我知道我可以使用Linq来查询每个对象并构建另一个对象,但有没有一种不那么冗长的方法呢?我还有一些其他的东西需要使用这种方法,我不想花几个星期的时间打字。

感谢

合并不同类型的对象

您可以使用一个可用的对象到对象映射器库,如AutoMapper或EmitMapper。如果配置正确,他们将负责双向复制数据并跳过字段。例如,使用EmitMapper,您的代码可能如下所示:

ObjectMapperManager.DefaultInstance
                   .GetMapper<WS.Customer, EF.Customer>(<your configuration object here>)
                   .Map(customerSource, customerDestination);

"合并"是什么意思?我想您需要从一个实例"转换"到另一个实例,即当属性的名称和类型匹配时复制值。请看一下对象的扩展方法ServiceStack中提供的实现-TranslateTo方法:https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.Common/ReflectionExtensions.cs#L31