如果您从 NInject 请求未绑定的对象,则默认行为是(如果有合适的构造函数可用)似乎是创建适当对象的实例。
我想禁用此行为(我遇到了一个难以调试的问题,因为某些东西是自动绑定的,而不是在模块中获取我的自定义绑定)。 这个问题暗示这是可能的,但我无法从 NInject wiki 中找到答案。
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 有效。