是否可以为AutoMapper中的枚举禁用内置映射器,或将其替换为始终抛出异常的枚举器?
我发现内置的映射器非常不可靠,因为它将尝试最好将输入映射到您提供的任何枚举,这会增加在代码中引入,难以跟踪的错误的风险。
我更希望它失败,并有一个异常告诉我我缺少一个映射器/转换器,而不是让它正常工作,然后在调用堆栈中向下移动几步,代码失败,因为当前值不正确上下文。
从您写的内容中,我可以想到一些选择:
如果对象具有枚举属性,则可以忽略它通过显式使用:
CreateMap<Foo, Bar>().ForMember(dest => dest.EnumProperty, opt => opt.Ignore());
如果要为要映射的属性创建映射,而忽略枚举属性,则可以使用:
CreateMap<Foo, Bar>().ForMember(...).ForAllOtherMembers(opt => opt.Ignore())
如果要替换枚举类型之间的映射,可以使用以下方法覆盖它:
Mapper.CreateMap<EnumSrc,EnumDst>().ConvertUsing(value => {
throw new Exception();
});