用Simple Injector替换Ninject代码

时间:2013-09-25 11:51:30

标签: c# dependency-injection ninject simple-injector

我找到了这篇文章Replace Ninject with Simple Injector

但尚未找到跟踪迁移的解决方案。 有了Ninject:

public class ServiceClass : IServiceClass
...
IKernel kernel
...
this.kernel.Bind<IServiceClass>().ToMethod(context => this);

我尝试将此构造与Simple Injector一起使用:

public class ServiceClass : IServiceClass
   ...
   Container container
   ...
   this.container = container;
   this.container.Register<IServiceClass>(() => container.GetInstance<ServiceClass >());

它等于Ninject 1吗?

Ninject的第二部分是:

public void BindSomeCallback(DelegateNumberOne delegateNumberOne)
{        
   this.kernel.Rebind<DelegateNumberOne>().ToConstant(delegateNumberOne);
}

为:

public void BindSomeCallback(DelegateNumberOne delegateNumberOne)
{ 
   this.container.Register<DelegateNumberOne, delegateNumberOne>();
}

1 个答案:

答案 0 :(得分:1)

  

它等于Ninject 1吗?

不。这是:

this.container.Register<IServiceClass>(() => this);

但是因为你实际上正在注册一个单例,你可以更好地编写它如下:

this.container.RegisterSingle<IServiceClass>(this);
  

Ninject的第二部分是:

再次在这里,您希望将委托注册为单身:

this.container.RegisterSingle<DelegateNumberOne>(delegateNumberOne);