[英]automapper conditional Custom Value Resolver
只有满足特定条件,是否可以在 automapper 中使用自定义值解析器?
在我的情况下,如果目标不是 null,我只想使用自定义值解析器更新值。
这是我的代码示例。 基本上我需要在上面添加条件。 可能吗?
Mapper.CreateMap<ResponseXml, MyModel>()
.ForMember(dest => dest.FirstName,
op => op.ResolveUsing<ResponseXmlValueResolver>()
.FromMember(x => x.data.FirstOrDefault(y => y.name == "name")))
我认为 Eris 的解决方案会奏效。 这只是语法错误。
Mapper.CreateMap<ResponseXml, MyModel>()
.ForMember(dest => dest.FirstName,
op => {
op.Condition(src => src != null);
op.ResolveUsing<ResponseXmlValueResolver>();
.FromMember(x => x.data.FirstOrDefault(y => y.name == "name"));
});
这是你想要的吗?
如果目标是 null,则映射将被忽略。
如果目的地是 null,则将应用映射(客户已解决)。
由于条件是在解决成员后评估的,就像这里所说的那样,以前的答案都不是正确的。 您应该以这种方式使用 PreCondition:
Mapper.CreateMap<ResponseXml, MyModel>()
.ForMember(dest => dest.FirstName,
op => {
op.PreCondition(src => src != null);
op.ResolveUsing<ResponseXmlValueResolver>();
.FromMember(x => x.data.FirstOrDefault(y => y.name == "name"));
});
这行得通吗? (目前我面前没有 windows 盒子)
Mapper.CreateMap<ResponseXml, MyModel>()
.ForMember(dest => dest.FirstName,
op => op.Condition(src => src != null)
.ResolveUsing<ResponseXmlValueResolver>()
.FromMember(x => x.data.FirstOrDefault(y => y.name == "name")))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.