13

私はMEFについて頭を悩ませようとしています。わからないことが一つあります。

コントラクトである ISomething という名前のインターフェイスがあり、アプリケーションを含むフォルダーに複数のアセンブリがあり、それらの中に ISomething 実装がいくつあるのか、またはどのアセンブリに含まれているのかわかりません。

MEF を使用するホスト アプリケーションを作成し、ISomething を 1 つだけ取得したい場合、MEF はどの実装を提供するかをどのように決定しますか?

または、一般的な IoC コンテナーと同様に、どの実装を使用する必要があるかをどのように伝えるのでしょうか?

ご回答ありがとうございます。

4

2 に答える 2

14

この問題といくつかのオプションについては、このブログ投稿を参照してください。また、Glenn Blockには、デフォルトでコンテナの動作をカスタマイズする方法を説明するブログ投稿があります。

于 2009-12-09T19:58:49.227 に答える
11

MEF の場合、インポートを満たす多数のエクスポートがある場合、次の 2 つのオプションがあります。

  1. Import を使用するように変更します[ImportMany]。実行時に、コントラクトに使用するインポートを決定します。場合によっては最初のものを選択するか、ランダムに 1 つを選択します。
  2. 使用するインポートを決定するために、メタデータ[ImportMany]と組み合わせて使用​​します。
于 2009-12-09T19:07:49.767 に答える