AutoMapper可以在值类型(枚举)和引用类型之间进行映射吗?(串)

RPM*_*984 33 c# enums value-type reference-type automapper

奇怪的问题 - 我正在尝试使用AutoMapper 在枚举字符串之间进行映射:

Mapper.CreateMap<MyEnum, string>()
   .ForMember(dest => dest, opt => opt.MapFrom(src => src.ToString()));
Run Code Online (Sandbox Code Playgroud)

不要担心.ToString()我正在使用,实际上我在枚举本身上使用了一个扩展方法(.ToDescription()),但为了这个问题我一直保持简单.

当我只是简单地设置映射时,上面引发了一个对象引用错误.

考虑到这一点:

string enumString = MyEnum.MyEnumType.ToString();
Run Code Online (Sandbox Code Playgroud)

我看不出为什么我的AutoMapper配置没有.

AutoMapper可以处理这个,我做错了什么,或者这是AutoMapper的错误?

有任何想法吗?

编辑

我也尝试过使用自定义解析器:

Mapper.CreateMap<MyEnum, string>()
                .ForMember(dest => dest, opt => opt.ResolveUsing<MyEnumResolver>());

public class MyEnumResolver: ValueResolver<MyEnum,string>
{
   protected override string ResolveCore(MyEnum source)
   {
      return source.ToString();
   }
}
Run Code Online (Sandbox Code Playgroud)

同一行上的错误相同.:(

Jim*_*ard 60

要在您控制整个映射的两种类型之间进行映射,请使用ConvertUsing:

Mapper.CreateMap<MyEnum, string>().ConvertUsing(src => src.ToString());
Run Code Online (Sandbox Code Playgroud)

所有其他方法都假定您映射到目标类型上的各个成员.

  • 啊 - 这是有道理的.因为我正在做`.ForMember`,但我实际上并没有尝试映射成员,我试图映射整个对象.效果很棒 - 谢谢!+1并接受. (2认同)