在 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。
我在特定方法的上下文中尝试替换依赖项。
所以我正在做这样的事情:
在我的 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。