C# 用简单喷油器替换Ninject代码

C# 用简单喷油器替换Ninject代码,c#,dependency-injection,ninject,simple-injector,C#,Dependency Injection,Ninject,Simple Injector,我找到了这个帖子 但尚未找到后续迁移的解决方案。 对于Ninject: public class ServiceClass : IServiceClass ... IKernel kernel ... this.kernel.Bind<IServiceClass>().ToMethod(context => this); 公共类服务类:IServiceClass ... IKernel核 ... this.kernel.Bind().ToMethod(context=>thi

我找到了这个帖子

但尚未找到后续迁移的解决方案。 对于Ninject:

public class ServiceClass : IServiceClass
...
IKernel kernel
...
this.kernel.Bind<IServiceClass>().ToMethod(context => this);
公共类服务类:IServiceClass
...
IKernel核
...
this.kernel.Bind().ToMethod(context=>this);
我尝试将此结构用于简单的喷油器:

public class ServiceClass : IServiceClass
   ...
   Container container
   ...
   this.container = container;
   this.container.Register<IServiceClass>(() => container.GetInstance<ServiceClass >());
公共类服务类:IServiceClass
...
集装箱
...
this.container=容器;
这个.container.Register(()=>container.GetInstance());
它等于九分之一吗

Ninject的第二部分是:

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

public void BindSomeCallback(DelegateNumberOne DelegateNumberOne)
{ 
this.container.Register();
}
它等于九分之一吗

没有。这是:

this.container.Register<IServiceClass>(() => this);
this.container.Register(()=>this);
但是,既然您实际上是在注册一个单身汉,那么您最好按照以下方式编写它:

this.container.RegisterSingle<IServiceClass>(this);
this.container.RegisterSingle(this);
Ninject的第二部分是:

public void BindSomeCallback(DelegateNumberOne delegateNumberOne)
{        
   this.kernel.Rebind<DelegateNumberOne>().ToConstant(delegateNumberOne);
}
在这里,您要再次将委托注册为singleton:

this.container.RegisterSingle<DelegateNumberOne>(delegateNumberOne);
this.container.RegisterSingle(delegateNumberOne);
它等于九分之一吗

没有。这是:

this.container.Register<IServiceClass>(() => this);
this.container.Register(()=>this);
但是,既然您实际上是在注册一个单身汉,那么您最好按照以下方式编写它:

this.container.RegisterSingle<IServiceClass>(this);
this.container.RegisterSingle(this);
Ninject的第二部分是:

public void BindSomeCallback(DelegateNumberOne delegateNumberOne)
{        
   this.kernel.Rebind<DelegateNumberOne>().ToConstant(delegateNumberOne);
}
在这里,您要再次将委托注册为singleton:

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

为什么要将
ServiceClass
的注册放在该类本身中,该服务类不是将所有注册都放在@Steven中,而是一种入口点,它有两个构造函数,一个用于测试套件,另一个用于测试code@Steven遗产代码的Delphi部分启动.NET部分,我已经展示了这里,我强烈建议您不要分散您的DI。在整个代码库中注册,并防止应用程序依赖于容器。将所有注册放在一个地方(您的合成根)。@Steven服务类-它是一个地方为什么要将
ServiceClass
的注册放在该类本身,该服务类不是将所有注册都放在@Steven中,而是一种入口点,它有两个构造函数,一个用于测试套件,另一个用于测试code@Steven遗产代码的Delphi部分启动.NET部分,我已经展示了这里,我强烈建议您不要分散您的DI。在整个代码库中注册,并防止应用程序依赖于容器。将所有注册放在一个地方(你的合成根)。@Steven theServiceClass-它是一个地方