gpt4 book ai didi

c# - C# 中两个项目中的循环依赖

转载 作者:可可西里 更新时间:2023-11-01 08:17:41 25 4
gpt4 key购买 nike

我在名为 ProjectA (ConsoleApplication) 和 ProjectB (ClassLibrary) 的解决方案中有两个项目。 ProjectA 引用了 ProjectB。一般来说,ProjectA 调用 ProjectB 中的一个方法来做一些事情并将结果返回给 ProjectA。然而,有时我需要 ProjectB 向 ProjectA 发送一些“附加”信息(更具体地说是调用 ProjectA 中的 Console.WriteLine() 方法)。为此,我需要在 ProjectB 中引用 ProjectA,但是当我尝试这样做时,出现以下错误:

无法添加对 ProjectA 的引用。添加此项目作为引用会导致循环依赖

我了解整个耦合概念并且收到此消息确实有意义,但是,在某些情况下我需要向 ProjectA 发送其他信息。有什么想法吗?

最佳答案

实际上可以创建具有成功编译的循环依赖项的项目,但我强烈建议不要这样做。相反,组织您的项目,使它们具有非循环依赖关系图。

有很多方法可以解决这个问题,其他答案中已经提到了其中的几种方法。一个尚未发布的是完全消除项目 A 和项目 B 之间的依赖关系,并创建一个 第三个​​ 项目 C,它定义了 A 和 B 进行通信的接口(interface)。即:

namespace C
{
public interface IFoo { void Frob(); }
public interface IBar { void Qux(); }
}

然后让项目A和B引用项目C,并让它们的类实现IFoo、IBar等。当项目 A 中的方法需要在项目 B 中的对象上调用 Frob 时,它通过获取 IFoo 来实现,而不是获取 B 中的某个类。

这有意义吗?

关于c# - C# 中两个项目中的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com