webdevqa.jp.net

AutoMapperは、値型(列挙型)と参照型をマッピングできますか? (ストリング)

奇妙な問題-AutoMapperを使用してenumstringをマッピングしようとしています:

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

同じ行で同じエラー。 :(

33
RPM1984

マッピング全体を制御する2つのタイプ間のマッピングには、ConvertUsingを使用します。

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

他のすべてのメソッドは、宛先タイプの個々のメンバーにマッピングしていることを前提としています。

60
Jimmy Bogard