Подтвердить что ты не робот

Использование Ninject с помощью службы Windows

Любые хорошие примеры использования Ninject с помощью службы Windows? Я не уверен, что, если какие-либо расширения мне нужны. Кроме того, не знаете, что должно быть корнем композиции? Любые хорошие примеры использования Ninject с сервисом Windows там?

4b9b3361

Ответ 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(...), я могу успешно запустить службу.

Надеюсь, что это поможет кому-то.