.net - 按实现类型查找 Ninject 绑定(bind)

标签 .net ninject

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

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

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

最佳答案

不容易。如果你能以某种方式构建一个 Ninject Context,你可以做

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/

相关文章:

entity-framework-4 - 超出范围时,Ninject 不会对对象调用 Dispose

c# - 使用新的 WCF Web API 设置 Ninject

C# 3.0 Auto-Properties - 是否可以添加自定义行为?

c# - 使用嵌套类中定义的扩展方法

c# - .Net 中的 Excel 样式条件数字格式

asp.net - 无法使 ninject 在 ASP.NET MVC4 Web 应用程序中工作

c# - 使用简单注入(inject)器的等效 Ninject 代码

asp.net-mvc - 为依赖注入(inject)设置过滤器属性以接受构造函数中的参数

c# - 从 MongoDB 'documents' 获取所有 'collection'

c# - 检查.NET 3.5中对给定实例保留了多少引用