C# 用简单喷油器替换Ninject代码
我找到了这个帖子 但尚未找到后续迁移的解决方案。 对于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
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-它是一个地方