2

この質問を書くのに苦労しました。

オープンソースソフトウェアをダウンロードしました。機能を拡張したいので、これらのモジュールが.dllファイルになる機能をカプセル化するモジュールを作成したいと思います。別のものから完全に独立したものにしたいと思います。構成ファイルでキーを true に設定し、DLL がフォルダーに存在する場合、プラグインをロードする必要があります。

問題は、プラグインを動的に呼び出すにはどうすればよいですか (プラグインの呼び出しのみが適用されます)。

プラグイン クラスを直接参照する場合、プラグイン dll を参照する必要がありますが、プラグインなしでコア ソフトウェアを実行できるようにしたいと考えています。プラグインが適用されている場合にのみ DLL を読み込んで使用でき、プラグインなしでコア ソフトウェアを実行できる設計パターンまたはその他のメカニズムはありますか?

4

4 に答える 4

2

MEFを使用できます。

Managed Extensibility Framework (MEF) は、大規模なアプリケーションの柔軟性、保守性、およびテスト容易性を向上させる .NET の構成レイヤーです。MEF は、サード パーティのプラグインの拡張性に使用することも、疎結合のプラグインのようなアーキテクチャの利点を通常のアプリケーションにもたらすこともできます。

プログラミングガイドはこちら。

于 2013-02-17T21:40:26.600 に答える
2

プラグインまたは .NET 専門用語の DLL はアセンブリと呼ばれます。Assemply.Load メソッドと、 msdn のこのガイドも確認してください。

于 2013-02-17T21:41:09.103 に答える
1

名前System.Reflection空間には、このシナリオに役立つ多くのツールが用意されています。

あなたはできる

  • アセンブリ (DLL ファイル) を調べて、その中のオブジェクトを調べます。
  • 探している型を見つけます (特定のクラス、特定のインターフェイスを実装するクラスなど)
  • それらのクラスの新しいインスタンスを作成し、
  • メソッドを呼び出し、それらのクラスのプロパティにアクセスします。

通常、何らかの作業を行う拡張機能にクラスを記述し、メソッド (例: DoWork()) を作成してから、そのメソッドを動的に呼び出します。

この質問で言及されている MEF は、より多くのフレームワークを使用して、まさにこれを行います。

于 2013-02-18T00:37:44.927 に答える