みんな
問題は、同じエクスポート シグネチャを持つ 2 つのエクスポートされたコンポーネントが存在するが、インポートする必要があるのは 1 つだけである場合です (これは可能です。実際の例では、古いプラグインをアンインストールせずに新しいプラグインをインストールして、古いプラグインを置き換えます)。どのコンポーネントをインポートする必要があるかを示す構成ファイルを提供できますが、問題は MEF に正しい選択を伝える方法です。
私には3つの方法があります:
カスタム カタログを使用して、利用可能なプラグインをフィルタリングします。しかし、A がコンポーネント A をインポートし、B がコンポーネント B をインポートし、コンポーネント A と B が同じエクスポート署名を持っている状況を想定します。コンポーネントごとに新しいカスタム カタログを作成しない限り、カスタム カタログではこれを処理できません。
MEF構成の傍受。それが可能かどうかはわかりませんし、方法もわかりません。しかし、合成プロセスでインターセプトできる方法があれば、これが最善の方法になる可能性があります。
実際のインターフェイスの代わりにインポート ラッパーを使用します。コンポーネントが構築されると、ラッパーが初期化され、ラッパーが選択ロジックを処理できるようになります (ウィンドウにプロンプトを表示し、ユーザーに 1 つを選択させたり、構成を読み取らせたりするなど)。