我最近一直在尝试学习 IoC,并且基于以下代码有几个问题:
public class WarriorModule : NinjectModule
{
public override void Load()
{
Bind<IWeapon>().To<Sword>();
Bind<Samurai>().ToSelf();
}
}
我无法掌握接口(interface)的新概念。在我创建一个接口(interface)之前,例如
IRunnable
,实现功能void Run()
.对于 IoC,我现在将接口(interface)视为仅映射到单个具体类的东西。假设,我如何将多个具体类映射到一个接口(interface)? 我一直在阅读,您可以将多个接口(interface)映射到单个具体类,但不能反过来(除非这是上下文映射发挥作用的地方)。假设接口(interface)只映射到单个对象,我什么时候应该创建一个接口(interface)而不是让一个对象绑定(bind)到自身? 无论哪种方式,当映射正确更改时,您都必须更改同一段代码?
编辑:我标记了我所做的答案,因为它对我个人有帮助。不过,这两条评论都同样提供了丰富的信息。
最佳答案
一个好的 IoC 容器不应该改变接口(interface)的使用方式:
Ninject 允许使用两种不同的概念以这种方式使用接口(interface):
Bind<IWeapon>().To<Sword>().When(ctx => TodayIsSunday());
Bind<IWeapon>().To<Dagger>().When(ctx => !TodayIsSunday());
关于dependency-injection - 使用 IoC 时我对接口(interface)抽象感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144622/