考虑一个使用 WinForms 的基于 MVC 模式的普通客户订单应用程序。视图部分增长太多(超过 4000 个文件),需要拆分成更小的文件。
对于这个例子,我们将使用 3 个项目作为视图部分:
- Main - 依赖于其他 2 个项目。用列表实例化表单。
- 客户- 有 2 个表格 - 客户列表和客户详细信息。
- 订单- 有 2 个表格 - 订单列表和订单详情。
在客户详细信息表单上,还有该客户的订单列表。该列表是从 OrdersController 接收的,因此获取它没有问题。当用户选择一个订单时,列表将获取它的 guid 并将其作为参考传递给 Order Details 表单。
这意味着我们需要在客户项目中引用订单项目。 (1)
但在订单详细信息表格上也有一个指向下订单的客户的链接。单击后,应打开“客户详细信息”表单。
这意味着我们需要在订单项目中引用客户项目。 (2)
从 (1) 和 (2) 开始,我们将在 Orders 和 Customers 项目之间建立循环依赖关系。
如何避免这种情况?某种插件架构?该项目已经开发完成,最好的解决方案将涉及尽可能少的代码更改。