21

アプリケーションのプラグイン システムを許可および実装するための標準的な方法は何ですか?

私の最後のアプリケーションでは、実装する必要があるすべてのプラグイン用の単純なインターフェイスを作成しました。次に、apps ディレクトリにあるすべてのアセンブリを読み込み、そのインターフェイスを実装していないアセンブリを破棄します。

インターフェイスのメソッドの 1 つは DoWork() メソッドで、読み込まれたすべてのアセンブリで定期的に呼び出され、プラグインが持つアクションを実行します。

プラグインシステムを行う「適切な」方法は何ですか? プラグイン用のインターフェースを作成するだけですか? すべてのプラグインで特定のメソッドを定期的に呼び出す必要がありますか? より洗練された方法はありますか?


編集:

System.Addin 名前空間を参照してくれた Matt Hamilton に感謝します。これは、おそらくプラグインを実装する方法です。しかし、私はまだ一般的なプラグイン アーキテクチャに興味があり、プラグインを設計、実装するための最良の方法についての背景を気にしません..ロードされたプラグインをどのように呼び出すべきかなど.

4

3 に答える 3

9

同様の質問に対するこの回答に従って、 System.AddIn 名前空間を確認してください。

于 2008-10-07T03:37:59.320 に答える
5

Microsoft の Glenn Block と Brad Abrams は最近、まさにあなたが話していることを処理するためのフレームワークを提供する Managed Extensibility Framework をリリースしました。

ドキュメントとダウンロードはこちらから入手できます。

GlennBrad のブログも MEF の優れたリソースです。

于 2008-10-07T04:16:37.747 に答える
4

厳密な設計パターンの観点から、OSGiを検討することをお勧めします(これは高度に Java 指向ですが、非常に優れたプラグイン/モジュール システムであると考えられています)。あなたが達成しようとしていることはやり過ぎかもしれませんが、実行中にモジュールのロードとアンロードを動的に処理する方法などについて、本当に良いものがたくさんあります...

于 2008-10-07T04:30:36.953 に答える