c# - C# AutoMapper:在条件映射中验证后按源值设置目标值
问题描述
我对 AutoMapper 还很陌生,想知道如何根据不同的源属性值将目标成员设置为一个值,如果该值为 null 我只想应用 Automapper 的默认行为(在源时保留目标值一片空白)
CreateMap<ClassA, ClassA>()
.ForMember(dest => dest.PropertyA, opt =>
opt.MapFrom(src => src.PropertyB!= null ? null : opt.UseDestinationValue())
)
这不起作用(不要编译)opt.UseDestinationValue(),我可以在这里使用什么选项?请帮忙
解决方案
尝试为映射目标属性设置先决条件。
CreateMap<ClassA, ClassA>().ForMember(dest => dest.PropertyA, opt => opt.PreCondition((src, dest) => src.PropertyB != null));
这将仅在 PropertyB 不为空时映射 PropertyA。我确实尝试了一个快速示例,它给出了预期的结果。
推荐阅读
- c# - XML 没有反序列化为正确的类,并且在之后没有使用 xsi:type 属性进行序列化
- c++ - 是否可以实现自动全局强制转换?
- java - 如何将 graphql-java-extended-scalars DateTime 与 Jackson 一起使用
- java - 程序打印出所需结果的不必要重复项
- c - 如何删除具有特定值的节点?
- html - VBA 运行时找不到 ElementById。元素在检查时存在,但在被 VBA 引用时不存在
- reactjs - 插件中的传播语法在 IE/edge 中不起作用
- c# - 验证多个文本框的文本?
- postgresql - 如何在 PostgreSQL 数据库中创建一些东西
- data-structures - 在 Clojure 中嵌套地图的惯用方式是什么