从ninject获取所有具体类型

时间:2011-10-27 12:52:06

标签: .net inversion-of-control ninject

有没有办法让ninject从绑定中获取具体类型?我不想实例化实现,只需获取类型。

我想做这样的事情

Type[] concreteTypes = Kernel.GetBindings(typeof(IController)).
    GetImplementingTypes();

我的Kernel只是StandardKernel

我想最终反对这些类型。

1 个答案:

答案 0 :(得分:4)

唯一的方法是使用kernel.GetAll<IController>()获取所有实例。 Ninject没有设置绑定映射。通过注入或获取调用解析实例时确定实现。这是因为Ninject允许条件和隐式绑定。

如果您设置了MVC3应用程序,则实际上并未注册控制器,因为Ninject将确定要加载哪个控制器以及要注入的控制器。它通过懒惰地创建隐式绑定来实现这一点。

您最接近的是扩展StandardKernel并访问受保护的绑定集并查找所有非条件绑定。一旦你拥有了所有非条件绑定,你就可以拆开绑定,但我记不起来,因为它们可能隐藏在StandardProvider类后面。

您在做什么需要知道特定接口的确切绑定配置?