将 Ninject 代码替换为 Simple Injector
本文关键字:Simple Injector 替换 Ninject 代码 | 更新日期: 2023-09-27 18:32:54
我找到了这篇文章 用简单的注射器替换 Ninject
但尚未找到后续迁移的解决方案。使用Ninject:
public class ServiceClass : IServiceClass
...
IKernel kernel
...
this.kernel.Bind<IServiceClass>().ToMethod(context => this);
我尝试将这种结构与简单注射器一起使用:
public class ServiceClass : IServiceClass
...
Container container
...
this.container = container;
this.container.Register<IServiceClass>(() => container.GetInstance<ServiceClass >());
等于宁注射一吗?
Ninject的第二部分是:
public void BindSomeCallback(DelegateNumberOne delegateNumberOne)
{
this.kernel.Rebind<DelegateNumberOne>().ToConstant(delegateNumberOne);
}
自:
public void BindSomeCallback(DelegateNumberOne delegateNumberOne)
{
this.container.Register<DelegateNumberOne, delegateNumberOne>();
}
等于宁注射一吗?
不。这是:
this.container.Register<IServiceClass>(() => this);
但是,由于您实际上是在注册单例,因此可以更好地编写如下:
this.container.RegisterSingle<IServiceClass>(this);
Ninject的第二部分是:
同样在这里,您希望将委托注册为单一实例:
this.container.RegisterSingle<DelegateNumberOne>(delegateNumberOne);