[英]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.