2014-02-18 130 views
1

我已经添加了另一个项目“xml”到我的项目“同步”。如何解决循环依赖

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

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

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

感谢

+1

你真的需要显示一些代码,使您的问题更加清晰。 –

+0

尝试使用反射。这篇文章可能会帮助你。 http://stackoverflow.com/questions/2202381/reflection-how-to-invoke-method-with-parameters – samar

回答

2

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

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

+0

没有那么完美,抛出一个被xml/details捕获的catch,然后简​​单地记录错误并重新运行该函数。谢谢 – John

2

你当循环依赖:

A依赖于B和如果你觉得都需要这种依赖性,那么B取决于A.

他们应该属于e项目。

+0

嗯,无论是,或者你可以将他们都需要的共同逻辑移到第三个项目中,可以单独依靠。 – Kjartan

4

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

换句话说,是这样的:(X < ---> Y)

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

为了解决这个问题,寻找逻辑的共同的东西/件,可以从一个或两个项目被移出,并创建既可以在别人之前建成第三个项目。把所有常见的东西放在那里,你应该没问题;那么你的依赖关系应该是类似于以下内容的类型,其中只要在两者之前编译了Z或X,那么它们无关紧要:(X - > Z < - Y)

0

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