我在项目“synchronize”中添加了另一个项目“xml”。
因此program.cs(在xml项目中)运行getDetails(),它在synchronize项目中运行FectchDetails()并将结果作为对象返回给xml / getDetails()。
如果Synchronize / FecthDetails()中发生错误,我想重新运行xml / getDetails()。
我已经尝试过xml.getDetails,但是它说它不存在,因为它不是对项目的引用所以我尝试将xml项目添加到synchroinse但它告诉我我不能这样做因为它会导致循环依赖。 ......我该如何解决这个问题
感谢
答案 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 和同步项目
引用此项目