3

AutoMapper によって既に実装されている機能を失うことなく、AutoMapper が自分の型を変換する方法をカスタマイズしたいと考えています。

カスタムITypeConverterインスタンスを作成できましたが、デフォルトの動作を呼び出す方法がわかりません。

Mapper.CreateMap<MyDomainObject, MyDto>
      .ConvertUsing<MyTypeConverter>();

...

public class MyTypeConverter : TypeConverter<MyDomainObject, MyDto>
{
    public MyDto ConvertCore(MyDomainObject source)
    {
        var result = // Do the default mapping.

        // do my custom logic

        return result
    }
}

呼び出そうとするとvar result = Mapper.Map<MyDto>(source)、無限ループに陥ります。TypeConverter が定義されていないと仮定して、AutoMapper が通常行うすべてのことを効果的に実行したいと考えています。

どんな助けでも大歓迎です。

4

1 に答える 1

1

宛先オブジェクトの一部の値のみをカスタマイズする場合は、カスタム値リゾルバーを使用することをお勧めします。TypeConverters は、変換全体を処理するように設計されています。

上記のドキュメント ページには、開始するのに十分な情報が含まれています。CustomResolver を実装したら、次のように適用します。AutoMapper は、他のプロパティのデフォルト マッピングを行います。

Mapper.CreateMap<MyDomainObject, MyDto>()
    .ForMember(dest => dest.TargetProperty, 
               opt => opt.ResolveUsing<CustomResolver>());
于 2013-06-04T21:55:24.507 に答える