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

时间:2011-04-12 06:46:15

标签: c# enums automapper value-type reference-type

奇怪的问题 - 我正在尝试使用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();
   }
}

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

1 个答案:

答案 0 :(得分:59)

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

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

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