禁用AutoMapper内置枚举器映射器

问题描述 投票:0回答:1

是否可以为AutoMapper中的枚举禁用内置映射器,或将其替换为始终抛出异常的枚举器?

我发现内置的映射器非常不可靠,因为它将尝试最好将输入映射到您提供的任何枚举,这会增加在代码中引入,难以跟踪的错误的风险。

我更希望它失败,并有一个异常告诉我我缺少一个映射器/转换器,而不是让它正常工作,然后在调用堆栈中向下移动几步,代码失败,因为当前值不正确上下文。

c# enums automapper
1个回答
0
投票

从您写的内容中,我可以想到一些选择:

  1. 如果对象具有枚举属性,则可以忽略它通过显式使用:

    CreateMap<Foo, Bar>().ForMember(dest => dest.EnumProperty, opt => opt.Ignore());
    
  2. 如果要为要映射的属性创建映射,而忽略枚举属性,则可以使用:

    CreateMap<Foo, Bar>().ForMember(...).ForAllOtherMembers(opt => opt.Ignore())
    
  3. 如果要替换枚举类型之间的映射,可以使用以下方法覆盖它:

    Mapper.CreateMap<EnumSrc,EnumDst>().ConvertUsing(value => { 
        throw new Exception(); 
    });
    
© www.soinside.com 2019 - 2024. All rights reserved.