考虑使用WinForms基于MVC模式的普通客户订单应用程序.视图部分增长太多(超过4000个文件),需要将其拆分为较小的文件.
对于此示例,我们将使用3个项目作为视图部分:
Main - 与其他2个项目有依赖关系.使用列表实例化表单.
客户 - 有2种表格 - 客户列表和客户详细信息.
订单 - 有2种形式 - 订单清单和订单详细信息.
在客户详细信息表单上还有该客户的订单列表.该列表是从OrdersController接收的,所以它没有问题.当用户选择订单时,列表将获得它的guid并将其作为对Order Details表单的引用传递.
这意味着我们需要在Customers项目中引用Orders Project. (1)
但是,在订单详细信息表格中,还有一个指向客户的链接.单击时,应打开"客户详细信息"表单.
这意味着我们需要在Orders项目中引用Customers Project. (2)
从(1)和(2)我们将在Orders和Customers项目之间存在循环依赖关系.
如何避免这种情况?某种插件架构?该项目已经开发出来,最佳解决方案将尽可能少地改变代码.
将至少一种类型更改为接口.
例如,有一个ICustomer接口和一个实现此接口的Customer类型.现在将ICustomer添加到订单项目中,并从customers项目中设置对Orders项目的引用,以便您可以实现该接口.Order类型现在可以在不知道实际实现的情况下对ICustomer类型起作用.
为了获得更好的解决方案:-)创建一个ICustomer和一个IOrder接口,并将它们添加到第三个库项目中.并从其他两个引用该项目,仅与接口一起工作,从不与实现一起工作.