Ninject: 注入所有子类
Ninject: Inject all subclasses
好的,所以我已经了解了如何使用 kernel.GetAll 取回实现接口的每个 class 的实例。 (这里多次注入有详细记录:https://github.com/ninject/Ninject/wiki/Multi-injection)
如果我想做几乎相同的事情,但我想让它注入子class的所有继承者怎么办?
var instances = kernel.GetAll<ParentClass>(); // or something equivalent?
我试过上面的代码。它不会抛出,但也不会 return 任何实例。
您需要将基础 class 绑定到每个派生的 class,如下所示:
kernel.Bind<ParentClass>().To<ClassA>();
kernel.Bind<ParentClass>().To<ClassB>();
var instances = kernel.GetAll<ParentClass>();
好的,所以我已经了解了如何使用 kernel.GetAll 取回实现接口的每个 class 的实例。 (这里多次注入有详细记录:https://github.com/ninject/Ninject/wiki/Multi-injection)
如果我想做几乎相同的事情,但我想让它注入子class的所有继承者怎么办?
var instances = kernel.GetAll<ParentClass>(); // or something equivalent?
我试过上面的代码。它不会抛出,但也不会 return 任何实例。
您需要将基础 class 绑定到每个派生的 class,如下所示:
kernel.Bind<ParentClass>().To<ClassA>();
kernel.Bind<ParentClass>().To<ClassB>();
var instances = kernel.GetAll<ParentClass>();