WinForms を使用した MVC パターンに基づく通常の顧客注文アプリケーションを考えてみましょう。ビュー パーツが大きくなりすぎて (4000 ファイル以上)、小さいパーツに分割する必要があります。
この例では、ビュー パーツに 3 つのプロジェクトを使用します。
- Main - 他の 2 つのプロジェクトに依存しています。リストを使用してフォームをインスタンス化します。
- 顧客- 顧客リストと顧客詳細の 2 つのフォームがあります。
- 注文- 注文リストと注文詳細の 2 つのフォームがあります。
顧客詳細フォームには、その顧客の注文リストもあります。リストは OrdersController から受け取るので、問題なく取得できます。ユーザーが注文を選択すると、リストはその GUID を取得し、それを [注文の詳細] フォームへの参照として渡します。
これは、Customers プロジェクトの Orders プロジェクトへの参照が必要であることを意味します。 (1)
しかし、注文詳細フォームにも、その注文を行った顧客へのリンクがあります。クリックすると、Customer Details フォームが開きます。
これは、Orders プロジェクトに Customers プロジェクトへの参照が必要であることを意味します。 (2)
(1) と (2) から、Orders プロジェクトと Customers プロジェクトの間に循環的な依存関係があります。
どうすればこれを回避できますか? ある種のプラグイン アーキテクチャ?プロジェクトはすでに開発されており、最適なソリューションはコードの変更をできるだけ少なくすることです。