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

时间:2013-01-28 15:30:55

标签: ninject ninject-3

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

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

2 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:6)

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

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

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