在 Ninject 中重新绑定后获取 NullReference

Getting NullReference after Rebind in Ninject

我在特定方法的上下文中尝试替换依赖项。

所以我正在做这样的事情:

在我的 Ninject 模块中,我最初注册的依赖项是这样的:

Bind<IMyDependency>().To<OriginalType>();

然后在我要替换依赖项的方法中使用重新绑定,如下所示:

MyMethod()
{
   _kernel.Rebind<IMyDependency, ReplacementType>();  

   ... some logic ...

   _kernel.Rebind<IMyDependency, OriginalType>();      
}

但是,在第一次重新绑定后,当我尝试解析 'IMyDependency'

时,我得到了 NullReference

我错过了什么? :)

您确定要使用

  _kernel.Rebind<IMyDependency, ReplacementType>();

而不是

  _kernel.Rebind<IMyDependency>().To(ReplacementType);

?

IBindingToSyntax<T1, T2> Rebind<T1, T2>();

该方法用于重新绑定服务 T1 和 T2,而不是将 T1 解析为 T2。