40

奇怪的问题 - 我正在尝试使用 AutoMapper在enumstring之间进行映射:

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();
   }
}

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

4

1 回答 1

69

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

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

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

于 2011-04-12T12:56:37.917 回答