如何解决Automapper中Condition的自定义值
我有类似的情况
如果总天数少于30天,那么我必须将Salary设置为null
this.CreateMap<Foo,Doo>()
.ForMember(dst => dst.Salary,opt => {
opt.Condition(src => src.JoinedDate.Days <= 30));
opt.MapFrom(null)
}
但是我遇到错误“找不到Foo类型的成员。参数名称:名称”。但没有任何属性“名称”。
问题是如何在条件检查中将空值传递给目标属性,如果天数大于30,则如何保留现有值。
opt.MapFrom(null)
解决方法
尝试使用:
ResolveUsing
UPD
要保留目标中的ForMember(dst => dst.Salary,o => o.ResolveUsing(src => src.JoinedDate.Days > 30 ? src.Salary: null));
,请使用this.CreateMap<Foo,Doo>()
.ForMember(dst => dst.Salary,opt => opt.MapFrom(src => src.JoinedDate.Days <= 30 ? null : src.Salary))
的重载,同时接受源和目标:
Salary
,
您可以使用自动映射器内联foreach
。
mclapply
,
我只是结合了以上两种解决方案,并找到了问题的答案。
ForMember(dst => dst.Salary,opt => opt.ResolveUsing((src,dst) => src.JoinedDate.Days <= 30 ? null: dst.Salary));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。