如何获取绑定(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/