Kev*_*aja 6 .net c# oop dependency-injection unity-game-engine
我正在学习C#及其周围的最佳实践。
现在我知道了:
每个人都说避免单例和静态,而更喜欢依赖注入。
现在,我已经转换了所有类,以便它们不必获取自己的数据,例如删除:
_myItem = Repository.Instance.FindById(1);
Run Code Online (Sandbox Code Playgroud)
而是将我的依赖项注入MyClass中。
public MyClass(Repository repository) {
_myItem = repository.FindById(1);
}
Run Code Online (Sandbox Code Playgroud)
但是,既然MyClass遵循单一职责原则,并且从MyClass外部获取所有依赖关系,那么哪个/哪个类将负责提供所有依赖关系?
我在Unity中的示例问题是:
请帮助我理顺这些知识。
既然MyClass遵循单一职责原则,并且从MyClass外部获取所有依赖关系,那么哪个/哪个类将负责提供所有依赖关系?
这是成分根的功能:
组合根是应用程序中模块组成的(最好)唯一位置。
合成根位于应用程序根目录内。
DI容器是有用但可选的工具,可以充当合成引擎。在没有DI容器的情况下应用DI的做法称为Pure DI。如果使用DI容器,则可以将其视为“ 合成根”的一部分。
关于以下代码的一则警告:
public MyClass(Repository repository) {
_myItem = repository.FindById(1);
}
Run Code Online (Sandbox Code Playgroud)
在实施DI时,注入构造函数应该没有任何逻辑,并且除了存储它们的传入依赖项外,不应该做其他任何事情。这意味着您不应FindById在MyClass的构造函数中调用。这应该在以后的阶段中完成;在一个MyClass的方法。
| 归档时间: |
|
| 查看次数: |
114 次 |
| 最近记录: |