如何解决循环依赖(how to resolve circular dependency)

2019-10-19 09:12发布

我已经加入另一个项目“XML”我的项目“同步”。

所以在Program.cs(在XML项目)运行getDetails(),它运行FectchDetails()在同步项目,并返回结果为对象到XML / getDetails()。

如果在同步/ FecthDetails我想重新运行XML / getDetails出现错误()()。

我用尽xml.getDetails,但它说它不存在,因为它不是参考的项目,所以我尝试将XML项目添加到synchroinse但它告诉我,我不能这样做,因为这将导致循环依赖....我怎么能解决这个

谢谢

Answer 1:

如果遇到同步/ FecthDetails()内的误差,想必你可以抛出一个应用程序异常,赶上在XML / getDetails。 然后,你可以决定是否重新尝试或告知用户它。

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



Answer 2:

基本上,你必须根据项目Ÿ项目X(X - > Y),以及项目ÿ取决于项目X(Y - > X)。

换言之,是这样的:(X <---> Y)

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

为了解决这个问题,寻找逻辑的共同的东西/件,可以从一个或两个项目被移出,并创建既可以在别人之前建成第三个项目。

发生在这个新项目中所有常见的东西,你应该罚款; 那么你的依赖应该是如下,其中如果X或Y首先编译,只要Z为他们两人之前编译它并不重要:

(X - >ž< - Y)



Answer 3:

你得到循环依赖关系时:

A依赖于B和B依赖于A.

如果你觉得都需要这种依赖,就应该属于一个项目。



Answer 4:

你可以从两个XML移动FetchDetails()到另一个项目,并参考这个项目和项目同步



文章来源: how to resolve circular dependency