在C#中循环引用依赖的任何方式?

时间:2012-11-09 01:57:08

标签: c# circular-reference

我有一个包含3个项目的解决方案

Project1 - main application
Project2 - graphing application
Project3 - graphing library

从Project1中的对象访问数据。项目1引用项目2来创建数据(表单)的显示,而项目2引用项目3来完成渲染图形的实际繁重工作。

现在,项目3需要访问项目1的对象/方法,因为这是数据所在的位置。但是当我从项目3添加引用到项目1时,我收到有关循环引用的错误。

我该如何解决这个问题?

感谢, 礼

3 个答案:

答案 0 :(得分:8)

你需要保持一个方向的流动..下来。

为了解决这个问题,我通常会有一个“模型”项目。数据模型全部存储在此项目中,此项目由需要它们的任何其他项目引用。

答案 1 :(得分:3)

没有;没有办法解决这个问题。你有一个循环依赖。您需要重构应用程序的各个层。

我觉得在层次方面(从最低到最高)对我来说效果最好

  1. 全球方法&配置(即基类型扩展方法,系统消息等)。
  2. 数据访问层。没有业务逻辑;只有数据CRUD逻辑。
  3. 业务层。在这里添加业务逻辑。
  4. UI值添加图层。这就是图形库之类的东西。 (可选)
  5. UI图层。这是您构建最终用户看到的UI的地方。

答案 2 :(得分:2)

处理循环引用的一种方法是重构您的应用程序。

创建项目4,并将项目的公共接口放在那里。您可以包含来自所有其他项目的项目4。现在在其他三个项目之一中实现该项目的接口,并通过某种工厂机制使用实现(控制容器的反转也很好,但对于更简单的应用程序来说可能是一种过度杀伤)。