1

コンシューマーと競合しないように、一般的なIOCサポートを提供するために共通サービスロケーター( http://commonservicelocator.codeplex.com/ )を利用する必要があるライブラリに取り組んでいます。明らかに、プロジェクトでIOCフレームワークを直接参照したくはありませんが、さまざまなフレームワークで検出できるようにパーツに注釈を付ける方法がわかりません。たとえば、MEFは通常、Exportアノテーションが付いたクラスを検索することで機能し、LinFuはImplementsアノテーションが付いたクラスを検索することで機能します。これらの注釈は両方ともそれぞれのプロジェクト内で定義されており、両方を参照する必要があります。

これらすべてのクラスを追加して、すべてのクラスに複数回注釈を付けることを回避するにはどうすればよいですか?新しいフレームワークの注釈ごとに再構築が必要になるため、新しいIOCフレームワークにはうまく適応しません。

4

1 に答える 1

2

ドキュメントから:

「ライブラリはコンテナを構成すべきではありません」

「ライブラリまたはフレームワークの作成者として、コンテナーに何も入れてはならないことを理解してください。それは呼び出し元の仕事です。アプリケーションの作成者が必要なコンテナーを選択できるようにします。登録する必要があるサービスを文書化する必要があります。 ServiceLocation.Current アンビエント コンテナーを使用しています。」

したがって、何もエクスポートする必要はないと思います。実行するために消費する必要があるものを文書化するだけです。オプションで ServiceLocator.Current インターフェイスを使用して、必要な依存関係を解決します。

于 2010-07-24T00:32:10.460 に答える