gpt4 book ai didi

c# - 循环依赖

转载 作者:太空狗 更新时间:2023-10-29 21:31:50 26 4
gpt4 key购买 nike

考虑使用 WinForms 基于 MVC 模式的普通客户订单应用程序。 View 部分增长太多(超过 4000 个文件),需要拆分成更小的部分。


对于这个例子,我们将为 View 部分使用 3 个项目:

  • Main - 依赖于其他 2 个项目。用列表实例化表单。
  • Customers - 有 2 个表单 - 客户列表和客户详细信息。
  • Orders - 有 2 种形式 - 订单列表和订单详细信息。

在客户详细信息表单上,还有该客户的订单列表。该列表是从 OrdersController 接收到的,因此获取它没有问题。当用户选择一个订单时,列表将获取它的 guid 并将其作为对订单详细信息表单的引用传递。

这意味着我们需要在客户项目中引用订单项目。 (1)

而且在订单详细信息表上还有指向下订单的客户的链接。单击后,应会打开“客户详细信息”表单。

这意味着我们需要在订单项目中引用客户项目。 (2)

从 (1) 和 (2) 开始,我们将在 Orders 和 Customers 项目之间建立循环依赖关系。


如何避免这种情况?某种插件架构?项目已经开发,最好的解决方案是尽可能少地更改代码。

最佳答案

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

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

为了更好的解决方案:-)创建 ICustomer 和 IOrder 接口(interface)并将它们添加到第三个库项目。并从其他两个项目中引用这个项目,并且只使用接口(interface),从不使用实现。

关于c# - 循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/120898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com