2010-11-23 7 views
0

私は.NET 2.0アプリケーションを持っています。私がしたいのは、何らかの方法でメインアプリケーションにアクセスできるプラグインを作成することです。C#でアプリケーションの一部のプラグインを直接制御する方法はありますか?

私の理由は、私が更新する「プラグイン」というメニュー項目を持たずに、ボタンやメニュー項目をフォームに動的に追加できるようにするためです。これは、アプリケーション全体を再びリリースすることなく、アプリケーションGUIに物事を追加できるようにするためです。

今私は2つの方法を考えることができます。 1つは、アプリケーション全体への参照を常に期待するような方法でプラグインを作成することができます。すべてのフォームが含まれています。私はフォームに選択したアイテムにアクセス権を与えることができ、コントロールや任意のものを追加することができます。これは私には少し不安ですが、これが受け入れられるなら私に知らせてください。

私が考えることができるもう一つの方法は、主なアプリの各フォームのためのインターフェイスを使用して、アプリケーションの現在のフォームにアクセスできるようにすることです。しかし、私はどのようにこれを実装するか分からない。

すべてのヘルプ、提案、ウェブサイトの参照とコメントは高く評価されます。

答えて

2

これは、プラグインの作成者、信頼する人、プラグインが悪くなったときのユーザーのエクスペリエンスやデータはどうなるのでしょうか?

Fiddler http://www.fiddler2.com/fiddler2/は、最初の選択と非常によく似たプラグインモデルを持つWebデバッグプロキシです。すべてをプラグインライターに公開し、それらが壊れないようにします。これにより、Fiddlerの拡張機能は非常にシンプルになりますが、注意する必要があります。

このアプローチに不満がある場合は、2つの.NETテクノロジを詳しく見てみることをお勧めします。

最初はSystem.AddInネームスペースhttp://msdn.microsoft.com/en-us/library/gg145020.aspxです。この名前空間の型は、AddInsをサポートするアプリケーションの作成に役立ちます。

2番目はMEF http://mef.codeplex.com/です。 Managed Extensibility Frameworkは、アプリケーションの要件を記述するための非常に強力なAPIであり、拡張性の高いアプリケーションを構築できます。

MEFとWinFormsのに関しては、このSO質問チェックアウト:

Winforms with MEF

0

第二のアプローチはpreferibleだろう、あなたはあなたのappilcationsのmodifyable /プラグ可能な部品のすべてとすべてのプラグインを実装することを必要とし、IApplicationのインスタンスを取るIModifyApp.Modify(IApplication)のようないくつかの方法でIModifyAppインターフェースとインターフェースIApplicationを作成することができますし、処理するアプリケーションの変更されたインスタンスを返します。

また、MEFをチェックアウトする必要があります。Microsoftが管理する拡張性フレームワーク。

0

私はこのちょっとシナリオがAppDomainに使用されているために前に行っている何を。あなたのメインプロセス内のプロセスのようなものです。メインプロセスを停止しなければならないAppDomain w.oでアセンブリをロード/アンロードすることができます。メインプロセスがAppDomain内の "updates" dllからロードされたインタフェースについて知っている限り問題はありません。そうでない場合、常に反射があります:)

0

あなたのニーズに対応するために、CAB/Prismのようなものを見たいかもしれません。UI-y-ness(技術用語)の多くは、一連の抽象化を通じてそれに組み込まれています。

http://compositewpf.codeplex.com/

関連する問題