如何解析有自己依赖项的循环依赖项

本文关键字:依赖 循环 自己 何解析 | 更新日期: 2023-09-27 18:13:09

不确定标题是否有意义,但这是我能想到的最好的,所以让我解释一下。我正在重构,主要是重写和简化我的解决方案中的一个项目,它包含了一堆基本上包含我的业务逻辑的"服务"。有一堆服务,每一个都从实体框架实现中支持一个特定的对象。我面临的问题是,每个服务都可能依赖于其他服务,而其他服务又可能依赖于其他服务,可能还依赖于调用服务。事实上,我在旧版本的代码中遇到了循环依赖,我通过欺骗它并声明类的泛型版本来解决这个问题。它工作,但我不是很喜欢它。

通过重写,我想解决循环依赖发生的可能性,但我遇到的问题是所有服务都需要一个存储库注入到它们中。目前Ninject为我照顾,可能注入相同的存储库到他们所有的时候,它建立的对象,但我不确定如何维护Ninject照顾所有服务的依赖关系,并以某种方式避免循环引用的可能性。

我正在寻找如何解决这个难题的建议。

如何解析有自己依赖项的循环依赖项

根据这些接口为每个服务和程序声明接口。如果对服务使用构造函数注入,这些接口就不会有循环依赖,因为构造函数不是接口的一部分。这些接口可以在单独的纯合约项目中一起声明。

实现这些服务的类将只依赖于接口,而不依赖于具体的服务实现。这样你就不会有项目之间的循环引用。