首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环依赖

循环依赖
EN

Stack Overflow用户
提问于 2008-09-23 13:13:33
回答 4查看 2.3K关注 0票数 6

考虑使用WinForms的基于MVC模式的普通客户订单应用程序。视图部分增长过大(超过4000个文件),需要分割成较小的文件。

对于这个示例,我们将为视图部分使用3个项目:

  • Main -对其他两个项目有依赖关系。使用lists.
  • Customers -具有两个表单-客户列表和客户details.
  • Orders -实例化表单-订单列表和订单详细信息。

在“客户详细信息”表单中,还列出了该客户的订单列表。列表是从OrdersController收到的,所以获得它是没有问题的。当用户选择一个订单时,列表将得到它的guid,并将它作为对order表单的引用。

这意味着我们需要在Customers项目中引用Orders项目。(1)

但是,在订单详细信息表单中,还有一个指向发出该订单的客户的链接。单击时,应打开“客户详细信息”表单。

这意味着我们需要在Orders项目中引用Customers Project。(2)

来自(1)和(2),我们将在订单和客户项目之间存在循环依赖关系。

如何避免这种情况?是一种插件式的体系结构?该项目已经开发,最好的解决方案将涉及尽可能少的代码更改。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-09-23 13:23:01

将至少一种类型更改为接口。

例如,有一个ICustomer接口和一个实现此接口的客户类型。现在,将ICustomer添加到orders项目,并从customers项目中设置对Orders项目的引用,以便实现接口。Order类型现在可以在不知道实际实现的情况下针对ICustomer类型工作。

为了获得更好的解决方案:-)创建一个ICustomer和一个IOrder接口,并将它们添加到第三个库项目中。并从其他两个中引用此项目,并且只与接口一起工作,而不使用实现。

票数 6
EN

Stack Overflow用户

发布于 2008-09-23 13:20:21

如果它们是紧密耦合的,也许它们就不应该分开。

票数 1
EN

Stack Overflow用户

发布于 2008-09-23 13:22:13

提取接口并将它们放在单独的程序集中。由于您使用的是MVC架构,所以应该不难。查看Microsoft应用程序块中的示例和良好实践。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/120898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档