ここでN00b。これを達成する方法について少し調べてみましたが、あまり運がなかったので、いくつかのコード例を期待しています.
私はかなりうまく機能しているプラグイン アーキテクチャを使用しています。他のアセンブリ (Web プロジェクト) を「発見」し、それらを現在の Web サイトの「エリア」にコンパイルします。これが私が使用しているコードです(参照用)ここをクリックしてください。
これらのプラグインのいくつかについて、私は選択に直面しています: プラグインを使用する 3 つのサービスがありますが、プラグインを完全に再利用可能にしないという点で独特です。3 つの個別のプラグインを作成し、それらを 3 つの異なるメイン Web アプリに取り込むことができました。しかし、その後、プラグイン内にエリアを作成することを考え、それを機能させました (余分なエリアがピックアップされ、メイン Web サイトに配置されます (つまり、エリア > エリア))。後者のアプローチが機能すると感じたので、3 つのエリアを作成しました。プラグイン内で、共通コードがプラグインの主要部分にあり、3 つの領域ごとに 3 つのサービスに固有のコード/ビューがあります。
今、私が困惑しているのは、ユーザーが私が持っている3つの別々のWebサイトの1つにいるときに、3つのサービスのどの領域を使用するかをどのように決定できるかを考え出すことです. 3 つの個別のメイン アプリを作成し、プラグインを問題なく取り込むことができます。3 つの Web サイトにはそれぞれ独自のデータベースがあるため、メイン サイトで使用されている DBContext を特定する方法があれば、プラグイン内で 3 つの領域のどれを使用するかを特定できるのではないかと考え始めました。
プラグインのメイン コントローラーに if/else ロジックを持たせるか、プラグインのルートにある他のクラス ファイルでそれを処理できるのではないかと考えました。ここで助けが必要です。どんな例でも大歓迎です。
編集:フォルダ構造を試して表示しようとしています:
-Plugin1
-...
-Areas
-One
-Controllers, Views, etc.
-Two
-Controllers, Views, etc.
-Three
-Controllers, Views, etc.
-Controllers
-Views
-...
-Website1
-...
-Areas
-Plugin1 <- hidden files in VS2010, created by plugin architecture
-Areas (from Plugin1)
-One
-Two
-Three
-Views (from root of Plugin1)
-Controllers, Views, etc.