C# 如何解析具有自身依赖关系的循环依赖关系?

C# 如何解析具有自身依赖关系的循环依赖关系?,c#,.net,ninject,circular-dependency,C#,.net,Ninject,Circular Dependency,不确定这个标题是否有意义,但这是我能想到的最好的,所以让我解释一下。我正在重构,主要是重写和简化我的解决方案中的一个项目,它包含一系列基本上包含我的业务逻辑的服务。有一组服务,每一个都支持我的实体框架实现中的一个特定对象。我面临的问题是,每个服务都可能依赖于其他服务,而这些服务可能依赖于其他服务,也可能依赖于调用服务。事实上,我在旧版本的代码中遇到了循环依赖,我通过欺骗它并声明类的泛型版本来解决这个问题。它奏效了,但我不太喜欢它 通过重写,我想解决循环依赖发生的可能性,但我遇到的问题是,所有服务

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

通过重写,我想解决循环依赖发生的可能性,但我遇到的问题是,所有服务都需要向其中注入存储库。目前Ninject为我负责这一点,并且在构建对象时可能会将相同的存储库注入到所有服务中,但我不确定如何维护Ninject为所有服务负责的依赖关系,并以某种方式避免循环引用的可能性


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

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

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