我正在尝试使用 Ninject v3 测试托管在 .NET4 Windows 服务 ( System.ServiceProcess.ServiceBase
) 中的 Web 服务。
我创建MyServerModule : NinjectModule
,并在其中Load()
根据app.config
设置有条件地将我的接口绑定到运行时对象。
在ServiceBase.OnStart()
中,初始化步骤是:首先,StandardKernel
基于实例创建一个新的MyServerModule
,并将其与 Ninject 容器相关联。接下来,NinjectServiceHost
基于我的服务类创建一个实例,并打开服务主机开始监听。
在 Ninject v2 中,代码为:
IKernel kernel = new StandardKernel(new MyServerModule());
KernelContainer.Kernel = kernel;
NinjectServiceHost serviceHost = new NinjectServiceHost(typeof(MyService));
serviceHost.Open();
但是,在 Ninject v3 中,KernelContainer
不再存在。此外,NinjectServiceHost()
现在接受子类化的服务器工厂IServiceBehavior
。
如何在 Ninject v3 中执行类似的初始化步骤?