我正在研究与 Ninject 的上下文绑定。这适用于当您有一些抽象的多个实现时,并且注入目标类中的上下文确定注入哪些实现。
在文档中,使用“命名绑定”的示例如下所示:
Bind<IWeapon>().To<Shuriken>().Named("Strong");
Bind<IWeapon>().To<Dagger>().Named("Weak");
class WeakAttack {
readonly IWeapon _weapon;
public WeakAttack([Named("Weak")] IWeapon weakWeapon){
_weapon = weakWeapon;
}
public void Attack(string victim){
Console.WriteLine(_weapon.Hit(victim));
}
}
这意味着包含的程序集WeakAttack
显然必须引用 Ninject 才能NamedAttribute
在构造函数中使用。依赖注入的目标不必知道使用了哪个 DI 容器。我在这里想念什么?