C# 如何解决循环依赖

C# 如何解决循环依赖,c#,asp.net,asp.net-mvc-3,circular-dependency,C#,Asp.net,Asp.net Mvc 3,Circular Dependency,我已将另一个项目xml添加到我的项目同步中 因此,xml项目中的program.cs运行getDetails,它在Synchronize项目中运行FectchDetails,并将结果作为对象返回给xml/getDetails 如果Synchronise/FecthDetails中发生错误,我想重新运行xml/getDetails 我尝试了xml.getDetails,但它说它不存在,因为它没有引用项目,所以我尝试将xml项目添加到Synchronise中,但它告诉我我不能这样做,因为这会导致循环

我已将另一个项目xml添加到我的项目同步中

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

如果Synchronise/FecthDetails中发生错误,我想重新运行xml/getDetails

我尝试了xml.getDetails,但它说它不存在,因为它没有引用项目,所以我尝试将xml项目添加到Synchronise中,但它告诉我我不能这样做,因为这会导致循环依赖性……我如何解决这个问题


谢谢

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

A依赖于B,B依赖于A


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

在以下情况下,您会得到循环依赖关系:

A依赖于B,B依赖于A


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

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


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

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


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

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

换句话说,类似于:xy

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

要解决这个问题,请寻找可以从一个或两个项目中移出的常见事物/逻辑片段,并创建可以在其他两个项目之前构建的第三个项目

把所有普通的东西放在这个新项目中,你应该会很好;然后,您的依赖关系应该如下所示,如果先编译X或Y并不重要,只要Z在它们之前编译:


X->Z基本上,你有一个项目X依赖于项目yx->Y,项目Y依赖于项目xy->X

换句话说,类似于:xy

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

要解决这个问题,请寻找可以从一个或两个项目中移出的常见事物/逻辑片段,并创建可以在其他两个项目之前构建的第三个项目

把所有普通的东西放在这个新项目中,你应该会很好;然后,您的依赖关系应该如下所示,如果先编译X或Y并不重要,只要Z在它们之前编译:


X->Z您可以将FetchDetails移动到另一个项目,并从xml和同步项目中引用此项目

您可以将FetchDetails移动到另一个项目,并从xml和同步项目中引用此项目

您确实需要显示一些代码,以使问题更清楚。尝试使用反射。这篇文章可能会对你有所帮助。你真的需要展示一些代码,让你的问题更清楚。试着使用反射。这篇文章可能会对你有所帮助。不,这很完美,抛出了一个在xml/details中捕获的捕获,然后简单地记录错误并重新运行该函数,结果正常。thanksNo这太完美了,抛出了一个在xml/details中捕获的捕获,然后简单地记录错误并重新运行该函数,结果正常。或者,你可以将他们都需要的公共逻辑转移到第三个项目中,这两个项目都可以单独依赖。或者,你可以将他们都需要的公共逻辑转移到第三个项目中,这两个项目都可以单独依赖。