【发布时间】:2019-02-13 04:12:49
【问题描述】:
我想将 AutoMapper 与 proto3 一起使用,但我遇到的最大问题是从可能允许 null 的源属性映射到永远不会这样做的 proto。手动进行此类填充时,必须执行以下操作:
var proto = new Proto();
if (source.Field != null)
{
proto.Field = source.Field;
}
我仍然觉得这很荒谬,但显然 proto3 就是这样。
无论如何,这意味着映射必须有条件以确保null 值不会传播到原型:
config
.CreateMap<Source, Proto>()
.ForMember(
x => x.Field,
options => options.Condition(source => source.Field != null));
我能感觉到它变老了真的快,因为我的原型中有很多属性。
我想知道是否有办法在更高的抽象级别上处理这个问题?
【问题讨论】:
-
这可能有帮助吗? github.com/AutoMapper/AutoMapper/issues/… 如果是,我将作为答案发布
-
我现在就用这个,这似乎比你链接中的更简单:
.ForAllMembers(options => options.Condition((_, __, sourceMember) => sourceMember != null)) -
是的,因为该解决方案也涵盖了值类型,我猜您不需要它。
标签: c# automapper protocol-buffers proto3