.net 按实现类型查找Ninject绑定

.net 按实现类型查找Ninject绑定,.net,ninject,.net,Ninject,如何获取绑定到特定实现类型的绑定列表 IKernel.Bind<IService>().To(implementationType); 不容易。如果你能以某种方式构造一个Ninject上下文,你就能做到 Kernel.GetBindings(typeof(IService)) .Where(b => b.GetProvider(context).Type == implementationType) 更新 实际上,还有另一种方法。声明绑定时,可以提供元数据 Ker

如何获取绑定到特定实现类型的绑定列表

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

不容易。如果你能以某种方式构造一个Ninject上下文,你就能做到

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

实际上,还有另一种方法。声明绑定时,可以提供元数据

Kernel.Bind<IService>().To(implementationType)
     .WithMetadata("type", implementationType);
Kernel.Bind().To(implementationType)
.WithMetadata(“类型”,实现类型);
然后,您可以通过执行此操作获得所有绑定

Kernel.GetBindings(typeof(IService))
     .Where(b => b.Metadata.Get<Type>("type") == implementationType)
Kernel.GetBindings(typeof(IService))
.Where(b=>b.Metadata.Get(“类型”)==implementationType)
Kernel.GetBindings(typeof(IService))
     .Where(b => b.Metadata.Get<Type>("type") == implementationType)