循环依赖最佳实践

时间:2011-08-17 23:47:27

标签: c#

解决此问题的最佳方法是什么。

我有以下项目的项目:

  

模型

     

逻辑(参考模型)

     

同步(引用模型和逻辑)

     

Web(引用所有项目)

所有运行正常,Web项目触发同步项目,该项目使用模型和逻辑,并且它的工作正常。 但现在,有时,逻辑项目还必须在同步项目中调用一个方法,但由于不允许循环依赖,因此无法添加此引用。

让整个事情发挥作用的最简单方法是什么?

有关同步项目的更多信息。 同步可以自行完成。它运行的过程将数据从外部数据库传送到我的应用程序中的数据库。它通过基于模型创建对象并使用逻辑保存它们来实现。 这样可以正常工作,并且使我们能够简单地创建另一个可以执行相同操作但同时针对完全不同类型的数据库的同步项目/程序集。

问题是,我们现在不时想要在sychronization项目中调用一个方法来向另一个方向/外部数据库更新一些数据。

4 个答案:

答案 0 :(得分:3)

听起来像是重构的时候了。最简单的方法是将同步和逻辑中的各个部分分解为第五个项目并在两个项目中引用它们。但是,就像大多数简单的事情一样,这也可能表明您需要重新考虑如何首先分配代码。可能是Logic in Synchronization所需的代码首先属于Logic。

答案 1 :(得分:0)

或者:

  1. 出了点问题,你必须重构错误的依赖/引用
  2. 引入名为smth的新项目的时候就像Common一样(假设你已经有4个相当高级别的项目我敢打赌#1 - 试图找出为什么Synchronizaiton同时引用逻辑和逻辑引用同步)

答案 2 :(得分:0)

创建一个新项目“NewProject”并将该方法“或持有它的类”放入其中,然后将其添加为对SynchronizationLogic的引用

答案 3 :(得分:0)

为什么不将Logic需要的方法移动到Logic项目?然后,同步可以在Logic中调用该方法,因为它引用了Logic。

当然,我假设此方法需要的Synchronization中没有一大堆其他代码。如果有,那么也许是时候进行第五个项目了,或许叫做“Utility”或“Common”。

同步和逻辑也可能需要类似的方法,但不完全相同,在这种情况下,你需要制作两个独立的方法,每个项目一个。