プラグインのようなアプリケーションを実装しようとしています。すでにいくつかの解決策があることは知っていますが、これは概念実証にすぎず、それ以上のものではありません。アイデアは、アプリケーションのメインアプリケーションをデフォルトでほとんど機能なしにし、プラグインに相互に通知して、必要なすべての機能を実装させることです。
いくつかの問題が発生します。
- 実行時にプラグインがアプリケーションを通じて相互に認識できるようにしたい。これは、コード時に他のプラグインのアセンブリを参照できず、そのインターフェイスを使用できることを意味するのではなく、プラグイン機能の初期化は常にメインアプリを介して行う必要があります。たとえば、プラグインXとYの両方をロードしていて、YがXの機能を使用したい場合、アプリケーションがその機能を使用するために、その関心を「登録」する必要があります。ロードされたすべてのプラグインを保存するアプリケーションには、一種の「辞書」が必要です。私のアプリケーションへの関心を登録した後、プラグインYはXへの参照を取得して、それを使用できるようにします。これは良いアプローチですか?
- Xを使用するプラグインYをコーディングするときは、Xのアセンブリを参照する必要があるため、そのインターフェイスに対してプログラミングできます。それにはバージョン管理の問題があります。古いバージョンのプラグインXに対してプラグインYをコーディングするとどうなりますか?常に最新バージョンのアセンブリが存在する、すべてのアセンブリがある「中央」の場所を常に使用する必要がありますか?
.NETのこの種のデザインを具体的に扱っている本は偶然ありますか?
ありがとう
編集:私が行った2つの質問から人々は離れていると思います。MEFと#developの両方を見ることができますが、私が行った質問に対する具体的な回答を得たいと思います。