19

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

4

2 回答 2

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);
}
于 2012-04-23T21:05:46.200 回答
1

使用带有 TopShelf 的 Ninject .. run vs install(start) 我遇到了一个奇怪的问题,> MyService.exe run 代码可以正常工作 Kernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }

但是当我使用安装后启动服务时> MyService.exe install

它无法解析 Ninject 程序集扫描中提到的绑定。

经过几个小时打破我的头......

更改.From(...).FromAssembliesMatching(...)我可以成功启动服务。

希望它可以帮助某人。

于 2013-03-21T19:42:24.587 回答