gpt4 book ai didi

oop - 依赖注入(inject)和循环引用

转载 作者:行者123 更新时间:2023-12-01 10:16:53 27 4
gpt4 key购买 nike

我刚刚开始进行 DI 和单元测试,遇到了一个障碍,我相信对于那些更有经验的开发人员来说,这很简单:

我有一个名为 MessageManager 的类,它接收数据并将其保存到数据库中。在同一个程序集(Visual Studio 中的项目)中,我创建了一个存储库接口(interface),其中包含访问数据库所需的所有方法。该接口(interface)的具体实现在一个名为 DataAccess 的单独程序集中。

因此 DataAccess 需要对 MessageManager 的项目引用才能了解存储库接口(interface)。MessageManager 需要对 DataAccess 的项目引用,以便 MessageManager 的客户端可以注入(inject)存储库接口(interface)的具体实现。这当然是不允许的

我可以将接口(interface)移动到数据访问程序集中,但我相信存储库接口(interface)应该与使用它的客户端驻留在同一个程序集中

那我做错了什么?

最佳答案

您应该将您的界面与任一程序集分开。将接口(interface)与消费者或实现者放在一起违背了拥有接口(interface)的目的。

该接口(interface)的目的是允许您注入(inject)任何实现该接口(interface)的对象,无论它是否与您的 DataAccess 对象属于同一个程序集。另一方面,您需要允许 MessageManager 使用该接口(interface)而不需要使用任何具体实现。

将你的界面放到另一个项目中,问题就解决了。

关于oop - 依赖注入(inject)和循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/89959/

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