在 Ninject 2+ 中禁用非显式绑定类的隐式绑定/注入

  • 本文关键字:绑定 注入 Ninject ninject ninject-3
  • 更新时间 :
  • 英文 :


如果您从 NInject 请求未绑定的对象,则默认行为(如果有合适的构造函数可用)似乎是创建相应对象的实例。

我想禁用这种行为(我有一个难以调试的问题,因为某些东西是自动绑定的,而不是在模块中选取我的自定义绑定)。 这个问题暗示这是可能的,但我无法从NInject维基中找到答案。

创建后从内核组件中删除SelfBindingResolver

kernel.Components.RemoveAll<IMissingBindingResolver>();
kernel.Components.Add<IMissingBindingResolver, DefaultValueBindingResolver>();

以下是删除SelfBindingResolver的更好、更直接的方法,而不假设DefaultValueBindingResolver是唯一的其他IMissingBindingResolver组件:

kernel.Components.Remove<IMissingBindingResolver, SelfBindingResolver>();

Remove<T, TImplementation>()方法可能只在最新版本的 Ninject 中添加,但这对使用 Ninject 3.2.2.0 的我有用。

最新更新