MEF を使用して、ユーザーが C# ライブラリを拡張できるようにしています。これまでのところうまく機能していますが、今まで見たことのない方法で使用しようとしています。
これまでに見た MEF の主な使用例は次のとおりです。
- アプリケーションがプリミティブ インターフェイスを公開する (
IPerson
) - 外部ライブラリは MEF とプリミティブ インターフェイスを使用して、メイン ライブラリの機能を拡張します (たとえば
IPoliceman : IPerson
、機能を追加します)。 - 次に、アプリケーションは、何をしなければならないかに応じて
ImportMany
正しいものを検索するために使用しますIPerson
しかし、次のようなものが必要です。たとえば、一連のパラメーターを取り、それらのパラメーターに応じて推定税額を返す税計算機があるとします。これらの計算方法を変更するプラグインを MEF でユーザーが作成できるようにしたいと考えています。一度にロードできるのは、これを行う 1 つのプラグインだけです。それ以外の場合、どの代替実装を使用するかをどのように決定すればよいですか?
基本的に、私の質問は次のようになります。通常、MEF では、クラスとメソッドの実装を追加できます。ユーザーが実装を置き換えられるようにするにはどうすればよいですか?