将 Ninject 与 Windows Service 结合使用
本文关键字:结合 Service Windows Ninject | 更新日期: 2023-09-27 18:32:04
在Windows服务中使用Ninject有什么好的例子吗?我不确定我需要任何扩展。另外,不确定组合根应该是什么?有什么将Ninject与Windows服务一起使用的好例子吗?
在依赖注入方面,Windows 服务与常规命令行应用程序没有太大区别。直截了当的作曲根是你的Main
方法。
我通常这样做的方法是使用一个模块创建StandardKernel
,其中解决了我的依赖项。然后使用 kernel.Get
解析顶级依赖项 - 其他所有内容都将从那里开始:
static void Main(string[] args)
{
var kernel = new StandardKernel(new FooModule());
var barDependency = kernel.Get<Bar>();
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new FooService(barDependency) };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
使用 Ninject with TopShelf.. run vs install(start)我遇到了一个奇怪的问题,> MyService.exe run
与代码Kernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }
配合使用正常
但是当我使用> MyService.exe install
安装后启动服务时
它无法解析 Ninject 程序集扫描中提到的绑定。
经过几个小时的打破我的头...
将.From(...)
更改为.FromAssembliesMatching(...)
我可以成功启动服务。
希望它对某人有所帮助。