c# - 不同解决方案的两个项目之间的循环依赖

标签 c# .net circular-dependency circular-reference design-principles

假设有两个 .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 你能解释一下循环依赖的条件吗?

最佳答案

是的,这是一个循环依赖。

解决方案和项目只是组织文件的一种方式,但事实仍然是,如果 2 个类相互引用,则无论它们是否在同一解决方案中,都将被视为循环依赖。

关于c# - 不同解决方案的两个项目之间的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29215182/

相关文章:

node.js - nestjs中模块之间的循环依赖

c# - .NET 中具有多个 ID 的 SQL 查询

c# - 处理条件语句的最佳方法

c# - 在 C# 和 XAML 中更改事件选项卡的背景

c# - 如何让反序列化在需要 int 的非整数上抛出异常?

c# - 在按下 Enter 键时绑定(bind) TextBox

c# - Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT 中间件 C# .NET Core 2.2

c# 删除我的 case 语句中的重复项。使 Case 语句动态化

json - Node.js 服务器 : JSON. 字符串化深层对象

.net - .NET 中的循环 DLL 依赖项