首页 > 解决方案 > C# AutoMapper:在条件映射中验证后按源值设置目标值

问题描述

我对 AutoMapper 还很陌生,想知道如何根据不同的源属性值将目标成员设置为一个值,如果该值为 null 我只想应用 Automapper 的默认行为(在源时保留目标值一片空白)

 CreateMap<ClassA, ClassA>()                   
                    .ForMember(dest => dest.PropertyA, opt =>                             
                            opt.MapFrom(src => src.PropertyB!= null ? null : opt.UseDestinationValue())
                    )

这不起作用(不要编译)opt.UseDestinationValue(),我可以在这里使用什么选项?请帮忙

标签: c#automapper

解决方案


尝试为映射目标属性设置先决条件。

CreateMap<ClassA, ClassA>().ForMember(dest => dest.PropertyA, opt => opt.PreCondition((src, dest) => src.PropertyB != null));

这将仅在 PropertyB 不为空时映射 PropertyA。我确实尝试了一个快速示例,它给出了预期的结果。


推荐阅读