奇妙な問題-AutoMapperを使用してenumとstringをマッピングしようとしています:
_Mapper.CreateMap<MyEnum, string>()
.ForMember(dest => dest, opt => opt.MapFrom(src => src.ToString()));
_
私が.ToString()
を使用していることを心配しないでください。実際には、列挙型自体に拡張メソッド(.ToDescription()
)を使用していますが、質問。
上記は、マッピングを設定するだけでobject referenceエラーをスローします。
これを考えると:
_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();
}
}
_
同じ行で同じエラー。 :(
マッピング全体を制御する2つのタイプ間のマッピングには、ConvertUsingを使用します。
Mapper.CreateMap<MyEnum, string>().ConvertUsing(src => src.ToString());
他のすべてのメソッドは、宛先タイプの個々のメンバーにマッピングしていることを前提としています。