【问题标题】:Dependency Injection - accessing classes in same layer依赖注入 - 访问同一层中的类
【发布时间】:2015-04-27 14:51:27
【问题描述】:

如果两个类都具有通过构造函数注入的依赖项,那么一个类如何使用同一层中的另一个类?两者都不能被视为跨领域关注点。示例:

第 1 层:

回购A,回购B

第 2 层:

Class1 依赖于 RepoA

Class2 依赖 RepoB,但也需要调用 Class1 中的方法

第 3 层:

Controller1 依赖于 Class1、Class2

这是否存在根本缺陷,不应该存在 Class2 需要 Class1 的情况?或者 Class2 是否需要注入 RepoA 以便它可以在需要时实例化 Class1?

另外,可以将 Class1 注入 Class2,但那一定是错误的方式。将一个类注入同一层中的另一个类是不可能的(?)。

【问题讨论】:

    标签: .net dependency-injection


    【解决方案1】:

    将一个类注入同一层的另一个类是不可能的。

    为什么?这对我来说似乎是解决方案......如果Class2 依赖于RepoBClass1,那么它应该通过在构造函数中声明这些依赖关系来表明它们可以被注入。为什么它们来自同一层很重要?

    【讨论】:

    • 嗯.. 我想我真的从来没有想过为什么只是假设。谢谢!
    【解决方案2】:

    如果您遵循 Onion 架构,则允许在同一层和内部的任何东西上[创建依赖关系],但绝不会更高。话虽如此,您可以有效地将 Class1 作为依赖项添加到 Class2。

    就我自己的 2 美分而言,如果这是一个需要更普遍访问的实现,请考虑(如果有意义)将其添加到您的核心合约中。然后 Class2 可以访问 IClass1.Method。

    【讨论】:

    • 感谢布拉德的建议。
    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 2018-05-06
    • 2014-01-02
    相关资源
    最近更新 更多