Любые хорошие примеры использования Ninject с помощью службы Windows? Я не уверен, что, если какие-либо расширения мне нужны. Кроме того, не знаете, что должно быть корнем композиции? Любые хорошие примеры использования Ninject с сервисом Windows там?
Использование Ninject с помощью службы Windows
Ответ 1
Служба 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);
}
Ответ 2
Использование Ninject с TopShelf.. run vs install (start)
У меня возникла странная проблема, когда > MyService.exe run
отлично работает с кодом Kernel.Bind(handlers => { var bindings = handlers.From("abc.dll") ... }
Но когда я запускаю службу после установки с помощью > MyService.exe install
он не смог устранить привязки, упомянутые в процессе сканирования сборки Ninject.
Через несколько часов ломаю голову...
меняя значение .From(...)
на .FromAssembliesMatching(...)
, я могу успешно запустить службу.
Надеюсь, что это поможет кому-то.