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