【问题标题】:How to Resolve Circular Dependencies that have their own Dependencies?如何解决具有自己依赖关系的循环依赖关系?
【发布时间】:2014-09-06 01:55:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net ninject circular-dependency


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-13
      • 2021-04-26
      • 1970-01-01
      • 2014-12-18
      • 1970-01-01
      • 2012-01-31
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多