0

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

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

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

我知道我可以使用 Linq 来查询每个对象并构建另一个对象,但是有没有更简洁的做事方式?我还有其他一些需要使用这种方法的对象,并且不想花几周的时间打字。

谢谢

4

2 回答 2

2

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

ObjectMapperManager.DefaultInstance
                   .GetMapper<WS.Customer, EF.Customer>(<your configuration object here>)
                   .Map(customerSource, customerDestination);
于 2013-07-13T20:52:39.297 回答
1

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

于 2013-07-13T20:51:21.963 回答