AutoMapper可以在值类型(Enum)和引用类型之间映射吗?(字符串)

本文关键字:之间 引用类型 映射 字符串 Enum 类型 AutoMapper | 更新日期: 2023-09-27 17:50:10

奇怪的问题-我试图在enum字符串之间映射,使用AutoMapper:

Mapper.CreateMap<MyEnum, string>()
   .ForMember(dest => dest, opt => opt.MapFrom(src => src.ToString()));

不要担心我使用.ToString(),实际上我在枚举本身(.ToDescription())上使用扩展方法,但为了问题的缘故,我保持了简单。

上面的代码抛出对象引用错误,当我只是简单地设置映射时。

string enumString = MyEnum.MyEnumType.ToString();

我不明白为什么我的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();
   }
}

同一行出现相同错误。(

AutoMapper可以在值类型(Enum)和引用类型之间映射吗?(字符串)

对于两种类型之间的映射,您可以控制整个映射,使用ConvertUsing:

Mapper.CreateMap<MyEnum, string>().ConvertUsing(src => src.ToString());

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