繁体   English   中英

AutoMapper 与 Google Protocol Buffers 3 的实际使用

[英]Pragmattic use of AutoMapper with Google Protocol Buffers 3

我想将 AutoMapper 与 proto3 一起使用,但我遇到的最大问题是从可能允许null的源属性映射到从不这样做的原型。 手动进行此类填充时,必须执行以下操作:

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));

因为我的原型中有很多属性,所以我能感觉到它变老的速度非常快。

我想知道是否有办法在更高的抽象级别上处理这个问题?

您可以在CreateMap<Source,Proto>输出上使用ForAllOtherMembers方法并指定条件。 这将解决您未指定每个属性的问题

示例代码

config
    .CreateMap<Source, Proto>()
    .ForAllOtherMembers(
        options => options.Condition((src, dest, srcValue) => srcValue != null));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM