簡體   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