如何获取绑定(bind)到特定实现类型的绑定(bind)列表?

IKernel.Bind<IService>().To(implementationType);

像这样的东西?
var bindings = IKernel.GetBindings(typeof(IService))
                  .Where(b=>b.ImplementationType==implementationType)

最佳答案

不容易。如果可以以某种方式构造Ninject上下文,则可以

Kernel.GetBindings(typeof(IService))
     .Where(b => b.GetProvider(context).Type == implementationType)

更新

实际上,还有另一种方法可以做到这一点。声明绑定(bind)时,您可以提供元数据
Kernel.Bind<IService>().To(implementationType)
     .WithMetadata("type", implementationType);

然后,您可以通过执行此操作获得所有绑定(bind)
Kernel.GetBindings(typeof(IService))
     .Where(b => b.Metadata.Get<Type>("type") == implementationType)

关于.net - 按实现类型查找Ninject绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5487393/

10-09 08:12