Ninject:注入所有子类

时间:2017-01-12 20:58:11

标签: c# ninject

好的,所以我已经看到我如何使用kernel.GetAll来获取实现接口的每个类的实例。 (详见多注射:https://github.com/ninject/Ninject/wiki/Multi-injection

如果我想做几乎相同的事情,但是我想要它注入子类的所有继承者怎么办?

var instances = kernel.GetAll<ParentClass>(); // or something equivalent?

我已经尝试过上面的代码了。它不会抛出,但它也不会返回任何实例。

1 个答案:

答案 0 :(得分:1)

您需要将基类绑定到每个派生类,如下所示:

kernel.Bind<ParentClass>().To<ClassA>();
kernel.Bind<ParentClass>().To<ClassB>();
var instances = kernel.GetAll<ParentClass>();