奇怪的问题 - 我正在尝试使用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();
}
}
同一行上的错误相同。 :(
答案 0 :(得分:59)
对于您控制整个映射的两种类型之间的映射,请使用ConvertUsing:
Mapper.CreateMap<MyEnum, string>().ConvertUsing(src => src.ToString());
所有其他方法都假设您要映射到目标类型上的各个成员。