【发布时间】:2015-03-23 16:17:46
【问题描述】:
假设有两个 .net 项目不在同一个解决方案下。 ProjectA 在solution1 下,ProjectB 在solution2 下。 ProjectA 有 ProjectB 的引用,ProjectB 有 ProjectA 的引用。有两个类 ProjectA_Class 和 ProjectB_Class。 ProjectA_Class 创建 ProjectB_Class 的对象,ProjectB_Class 创建 ProjectA_Class 的对象。
namespace ProjectB
{
public class ProjectB_Class
{
public ProjectB_Class()
{
ProjectA_Class projA = new ProjectA_Class();
}
}
}
namespace ProjectA
{
public class ProjectA_Class
{
public ProjectA_Class()
{
ProjectB_Class projB = new ProjectB_Class();
}
}
}
我对循环依赖感到困惑。尽管它们不在同一个解决方案中,但它不是在两个类之间创建循环依赖吗?我们知道这两个项目是否驻留在同一个解决方案中,Visual Studio 不允许我们在 ProjectB 中引用 ProjectA,在 ProjectA 中引用 ProjectB,因为它会创建循环依赖。尽管它们不在同一个解决方案中,但它是否仍然在两个项目之间创建循环依赖?假设ProjectA中有一个类C,它创建了一个ProjectB_Class的对象,而ProjectB_Class没有使用任何C类的实例。难道ProjectA和ProjectB都有相互引用的循环依赖吗?
更新 1 你能解释一下循环依赖的情况吗?
【问题讨论】:
-
是的,它是一个循环依赖。你有什么问题?
-
看来你的问题应该是“为什么 VS 不警告这些循环依赖?”
-
实际上我和一个人就这个问题发生了争执,他告诉我,由于他们存在于不同的解决方案中,所以这不是循环依赖。当 ProjectA 中有一个 C 类创建 ProjectB_Class 的对象并且 ProjectB_Class 不使用 C 类的任何实例时,你能解释一下它是如何成为循环依赖的吗?
-
也许对不同种类的循环依赖存在混淆。起初我以为您在谈论循环 build 依赖,现在我从答案中看到这里涉及一种更基本的循环依赖。
-
您能否解释一下两个项目上下文中的循环构建依赖关系?
标签: c# .net circular-dependency circular-reference design-principles