前言
我觉得在使用 DI 框架时确实有可能让自己陷入困境。
(我选择的框架是 ninject,所以我将在我的示例中使用它。)
我将退后一步,看看 DI框架存在的原因:
为了防止不得不手动进行 DI
没错,本着 Ninjects 文档的精神,假设我们有一个Dojo
创建Samurai
s 的对象。这些Samurai
s 是IWeapon
在制作时给出的。
class Samurai{
readonly IWeapon weapon;
public Samurai(IWeapon weapon){
this.weapon = weapon;
}
}
现在我的理解是Dojo
在Kernel.Get<IWeapon>()
创建Samurai
.
哇
,我不是只是将我的 Dojo 与内核耦合了吗?
另外...应该如何获得内核:DI,单例,服务位置?
我觉得我们很快就打破了 DI 的目的,因为现在我依赖于我的 DI 框架。如果忍者被击败并且忍者也死了会发生什么?
问题
我们如何在不耦合到 DI 框架的情况下使用 DI?
邮报
我确定以前有人问过这个问题,但是我找不到任何东西。请使用评论发布相关问题,以便我们可以汇集知识以找出最佳解决方案。