Using Ninject with a Windows Service

霸气de小男生 提交于 2019-12-04 16:55:13

问题


Any good examples of using Ninject with a Windows Service? I'm not sure what if any extensions I need. Also, not sure what the Composition Root should be? Any good examples of using Ninject with a Windows service out there?


回答1:


A windows service does not differ much from a regular command line application in regard to dependency injection. The straight-forward composition root is your Main method.

The way I usually have done it is create the StandardKernel there with a module in which my dependencies are resolved. Then use kernel.Get to resolve the top level dependencies - everything else will follow from there:

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);
}



回答2:


Using Ninject with TopShelf.. run vs install(start) I faced a strange issue where > MyService.exe run works fine with the code Kernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }

But when i start the service after installing using > MyService.exe install

it could not resolve the bindings mentioned in Ninject assembly scanning.

After a few hours of breaking my head...

changing the .From(...) to .FromAssembliesMatching(...) i could start the service successfully.

Hope it helps someone.



来源:https://stackoverflow.com/questions/10286235/using-ninject-with-a-windows-service

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!