将Ninject与Windows服务一起使用的任何好例子?我不确定我需要什么扩展。另外,不确定作文根应该是什么?有没有使用Ninject和Windows服务的好例子?
答案 0 :(得分:19)
在依赖注入方面,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);
}
答案 1 :(得分:1)
将Ninject与TopShelf一起使用..运行vs安装(启动)
我遇到了一个奇怪的问题> MyService.exe run
使用代码Kernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }
但是当我使用> MyService.exe install
它无法解析Ninject程序集扫描中提到的绑定。
经过几个小时的打破我的头......
将.From(...)
更改为.FromAssembliesMatching(...)
我可以成功启动该服务。
希望它有所帮助。