依赖注入 - 在同一层访问 类

Dependency Injection - accessing classes in same layer

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

第 1 层:

回购 A、回购 B

第 2 层:

Class1 依赖于 RepoA

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

第 3 层:

Controller1依赖Class1,Class2

这是否存在根本缺陷,应该不会出现Class2需要Class1的情况?或者Class2是否需要注入RepoA,让它在需要的时候实例化Class1?

另外,Class1注入Class2是可以的,但肯定是方法不对。将 class 注入同一层中的另一个 class 是不可能的(?)。

It can't possibly make sense to inject a class into another class in the same layer.

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

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

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