繁体   English   中英

automapper 条件自定义值解析器

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

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