有没有办法让ninject从绑定中获取具体类型?我不想实例化实现,只需获取类型。
我想做这样的事情
Type[] concreteTypes = Kernel.GetBindings(typeof(IController)).
GetImplementingTypes();
我的Kernel
只是StandardKernel
。
我想最终反对这些类型。
答案 0 :(得分:4)
唯一的方法是使用kernel.GetAll<IController>()
获取所有实例。 Ninject没有设置绑定映射。通过注入或获取调用解析实例时确定实现。这是因为Ninject允许条件和隐式绑定。
如果您设置了MVC3应用程序,则实际上并未注册控制器,因为Ninject将确定要加载哪个控制器以及要注入的控制器。它通过懒惰地创建隐式绑定来实现这一点。
您最接近的是扩展StandardKernel
并访问受保护的绑定集并查找所有非条件绑定。一旦你拥有了所有非条件绑定,你就可以拆开绑定,但我记不起来,因为它们可能隐藏在StandardProvider
类后面。
您在做什么需要知道特定接口的确切绑定配置?