1

我发现这篇文章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 吗?

Ninject 的第二部分是:

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

至:

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

1 回答 1

1

它等于 Ninject 吗?

没有。这是:

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

但是由于您实际上是在注册一个单例,因此您可以更好地编写如下:

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

Ninject 的第二部分是:

再次在这里,您想将委托注册为单例:

this.container.RegisterSingle<DelegateNumberOne>(delegateNumberOne);
于 2013-09-25T13:13:10.643 回答