0

アプリケーションに機能を動的に追加するために、サード パーティのアセンブリ (プラグイン) にインターフェイスを提供する優れたツールである MEF に大きく依存しています。しかし今は、メイン アプリケーションからアクセスできるプラグインの共通インターフェイスだけでなく、メイン アプリケーションからさまざまなリソース (オブジェクトなど) にアクセスできるプラグインへのインターフェイスも提供する必要があります。これはどのように行うことができますか?プラグイン API のようなものを考えていますが、MEF がそのようなオプションを提供しているかどうかはわかりません。

このタスクのために私が念頭に置いていた 2 つのオプションがあります。

  • プラグインのインスタンス化でオブジェクトをパラメーターとして渡す

欠点: たとえば、別の場所で使用するログ オブジェクト インスタンスを渡すと、サード パーティのプラグインが簡単に Dispose を呼び出すことができ、アプリケーション全体または他のプラグインで使用できなくなります。とても危ない!

  • グローバルにアクセス可能な静的メソッドを宣言する
4

1 に答える 1

1

プラグインを構築したり、静的インスタンスをどこかに置いたりする代わりに、インジェクションを使用したい場合があります...

実際に他のオブジェクトをプラグインに挿入できます。最も一般的には[ImportingConstructor]

他のオブジェクトが MEF エクスポートを実装していない場合、この MEF 機能を使用できない可能性があります。この場合、たとえば Unity インジェクションを MEF プラグインと組み合わせて、プラグインが Unity コンテナーを使用して特定の問題を解決できるようにすることもできます。もの。これは少しトリッキーですが、特定の解決策があります。あなたが読みたいかもしれない古いがまだ有効なブログ投稿があります: http://pwlodek.blogspot.de/2009/05/unity-mef-integration-layer.html

于 2013-09-25T13:15:16.437 に答える