2

この質問と同様に: どこに AutoMapper.CreateMaps を配置しますか?

非静的 AutoMapper 初期化を配置する推奨される場所はどこですか?

var map = new MapperConfiguration( cfg => ... ).CreateMapper();

コントローラーからアクセスできるようにするために、マップ変数を格納する推奨される場所はどこですか?

前もって感謝します。

4

1 に答える 1

1

これに対する適切なアプローチは、依存性注入を使用して、アクセスが必要なコンポーネントにマッパーを注入することです。AutoMapper に対するこの新しいアプローチは、インターフェイスをモックするだけでよいため、単体テストにも最適です。

この場合、AutoFaq を IoC コンテナーとして使用し、AutoMapper を次のようにセットアップします。

builder.RegisterInstance(AutoMapperConfig.GetConfiguredMapper()).As<IMapper>();

GetConfiguredMapper は、MapperConfiguration の CreateMapper メソッドを呼び出して IMapper を返します。

その後、AutoFaq にすべてのワイヤアップとコンストラクターの注入を行わせることができます。

古いアプローチを本当に維持したい場合は、アプリケーションの静的クラスで IMapper をいつでもラップできます。

コードのモックと単体テストが非常に簡単になるので、私は間違いなく新しいバージョンを好みます。

于 2016-05-19T10:30:50.860 に答える