アプリケーションに機能を動的に追加するために、サード パーティのアセンブリ (プラグイン) にインターフェイスを提供する優れたツールである MEF に大きく依存しています。しかし今は、メイン アプリケーションからアクセスできるプラグインの共通インターフェイスだけでなく、メイン アプリケーションからさまざまなリソース (オブジェクトなど) にアクセスできるプラグインへのインターフェイスも提供する必要があります。これはどのように行うことができますか?プラグイン API のようなものを考えていますが、MEF がそのようなオプションを提供しているかどうかはわかりません。
このタスクのために私が念頭に置いていた 2 つのオプションがあります。
- プラグインのインスタンス化でオブジェクトをパラメーターとして渡す
欠点: たとえば、別の場所で使用するログ オブジェクト インスタンスを渡すと、サード パーティのプラグインが簡単に Dispose を呼び出すことができ、アプリケーション全体または他のプラグインで使用できなくなります。とても危ない!
- グローバルにアクセス可能な静的メソッドを宣言する