我尝试过类似AutoMapper Custom Mappings
的内容然而,我真正想要的是不要映射到另一个属性但忽略它。
我试过了:
.ForMember(m=>m.BillingAddress,m=>m.ResolveUsing((result, card) => {
if (!string.IsNullOrEmpty(card.BillingDetails?.Address1)) {
return card.BillingDetails.Address1;
}
else {
return result.Ignore();
}
}))
但这只是将某种类型的分辨率结果设置为我想要映射到的属性。
我真正想做的是我在这个问题上试图提出的问题:
https://github.com/AutoMapper/AutoMapper/issues/1690
即
.ForMember(m=>m.BillingAddress, m=>{
m.Condition(s=>!String.IsNullOrEmpty(s.BillingDetails?.Address1), m.MapFrom(...), m.Ignore())
}
现在,如果我使用.condition,它会清除我在这些字段中的任何内容 和.MapFrom之后。
答案 0 :(得分:0)
这并不是我喜欢这样的工作方式,但它适用于这种特殊情况。拥有我想要的东西仍然会很好,但看起来如果你不做mapFrom,它根本就会忽略它。
.ForMember(m => m.BillingAddress, m => {
m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.Address1));
m.MapFrom(i => i.BillingDetails.Address1);
})
.ForMember(m => m.BillingAddress2, m => {
m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.Address2));
m.MapFrom(i => i.BillingDetails.Address2);
})
.ForMember(m => m.City, m => {
m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.City));
m.MapFrom(i => i.BillingDetails.City);
})
.ForMember(m => m.State, m => {
m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.State));
m.MapFrom(i => i.BillingDetails.State);
})
.ForMember(m => m.Zip, m => {
m.Condition(s => !String.IsNullOrEmpty(s.BillingDetails?.Zip));
m.MapFrom(i => i.BillingDetails.Zip);
})