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();
}
}
同一行出现相同错误。(
对于两种类型之间的映射,您可以控制整个映射,使用ConvertUsing:
Mapper.CreateMap<MyEnum, string>().ConvertUsing(src => src.ToString());
所有其他方法都假定您映射到目标类型上的单个成员。