如何解决循环依赖

时间:2014-02-18 11:58:05

标签: c# asp.net asp.net-mvc-3 circular-dependency

我在项目“synchronize”中添加了另一个项目“xml”。

因此program.cs(在xml项目中)运行getDetails(),它在synchronize项目中运行FectchDetails()并将结果作为对象返回给xml / getDetails()。

如果Synchronize / FecthDetails()中发生错误,我想重新运行xml / getDetails()。

我已经尝试过xml.getDetails,但是它说它不存在,因为它不是对项目的引用所以我尝试将xml项目添加到synchroinse但它告诉我我不能这样做因为它会导致循环依赖。 ......我该如何解决这个问题

感谢

4 个答案:

答案 0 :(得分:4)

基本上,你有一个项目X取决于项目Y( X - > Y ),项目Y取决于项目X( Y - > X )。

换句话说,例如:(X< ---> Y)

这种情况意味着编译器不知道首先编译什么,因此抱怨。

要解决此问题,请查找可从一个或两个项目中移出的常见事物/逻辑片段,并创建可在其他项目之前构建的第三个项目。把所有常见的东西放在那里,你应该没事;你的依赖关系应该是如下所示,只要在两者之前编译Z,首先编译X或Y无关紧要:(X - > Z< - Y)

答案 1 :(得分:2)

在以下情况下获得循环依赖:

A取决于B和B取决于A.

如果您认为两者都需要这种依赖关系,那么它们应属于一个项目。

答案 2 :(得分:2)

如果在Synchronize / FecthDetails()中遇到错误,可能会抛出一个应用程序异常并在xml / getDetails中捕获它。然后,您可以决定是重新尝试还是通知用户。

如果我误解了你的问题,我很抱歉。如果可能的话发布一些伪代码。

答案 3 :(得分:0)

您可以将 FetchDetails()移动到另一个项目,并从 xml 同步项目

引用此项目