スタンドアロン アセンブリとして配布するように設計された .Net 4 ライブラリをまとめています。ライブラリの一部は、いくつかのアドホック Web サービス呼び出しを行います。この呼び出しでは、投影されたバージョンの をライブラリのコンシューマに返す予定です。Web サービスの応答表現と、ライブラリのコンシューマーが実際に取得するものとの間で、大量のマッピングを行う必要があります。このタスクにAutoMapperを活用したいと考えています。多くの場合、慣習は、退屈な右から左へのマッピング コードの多くを処理してくれます。
たとえば、私のライブラリは次のようなコードを公開する可能性があります。
public Widget GetWidget(Guid id)
{
// Get server representation
ServerWidget serverWidget = this.Request<ServerWidget>(id);
// Map to client representation
Widget clientWidget = Mapper.Map<ServerWidget, Widget>(serverWidget);
return clientWidget;
}
コードの他の場所では、明らかに呼び出す必要があります (さらに、マッピング用のカスタム構成):
Mapper.CreateMap<ServerWidget, Widget>();
AutoMapper の設計ガイドラインに従って、これは AppDomain ごとに 1 回だけ実行する必要があります (コストのかかる操作であるため)。このライブラリはあらゆる環境 (ASP.NET、WinForms アプリ、WPF アプリ、単体テスト ランナーなど) で使用できるため、このような状況でマップを適切に設定するにはどうすればよいでしょうか?
明らかに、私のコードは、クライアントが「ものを初期化する」ために呼び出すためのある種のメソッド(この場合はマッパー)を公開し、アプリケーションの起動プロセスの適切なタイミングで実際にその呼び出しを行ったと想定できますが、それはライブラリの消費者に課すには、本当に不十分な要件です。
誰かが私に何か提案をしたり、GitHub、Codeplex などで既にこのようなことを行っているオープンソース プロジェクトを教えてくれませんか?