将Ninject与Windows服务一起使用

时间:2012-04-23 18:34:36

标签: c# windows-services ninject

将Ninject与Windows服务一起使用的任何好例子?我不确定我需要什么扩展。另外,不确定作文根应该是什么?有没有使用Ninject和Windows服务的好例子?

2 个答案:

答案 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(...)我可以成功启动该服务。

希望它有所帮助。