Обновить Ninject v2 до v3 с помощью.NET 4 System.ServiceProcess.ServiceBase

Я пытаюсь использовать Ninject v3 для тестирования веб-службы, размещенной в службе Windows.NET4 (System.ServiceProcess.ServiceBase).

я создаю MyServerModule : NinjectModule и в пределах Load() Я условно привязываю свои интерфейсы к объектам времени выполнения на основе app.config Настройки.

В ServiceBase.OnStart(), шаги инициализации: во-первых, создать новый StandardKernel основанный на примере MyServerModule и связать его с контейнером Ninject. Затем создайте экземпляр NinjectServiceHost на основе моего класса обслуживания, и откройте хост службы, чтобы начать прослушивание.

В Ninject v2 код выглядит так:

IKernel kernel = new StandardKernel(new MyServerModule());
KernelContainer.Kernel = kernel; 
NinjectServiceHost serviceHost = new NinjectServiceHost(typeof(MyService));
serviceHost.Open();

Тем не менее, в Ninject v3, KernelContainer более не существует. Дополнительно, NinjectServiceHost() теперь принимает фабрику серверов, которая подклассы IServiceBehavior,

Как выполнить аналогичные шаги инициализации в Ninject v3?

1 ответ

Я столкнулся с подобной проблемой при запуске нескольких собственных служб WCF в службе Windows. Я в конечном итоге с помощью kernel.Get<IServiceBehavior>() в качестве первого параметра при инициализации каждого NinjectServiceHost.

Ваш пример может выглядеть так:

IKernel kernel = new StandardKernel(new MyServerModule());
NinjectServiceHost serviceHost = new NinjectServiceHost( kernel.Get<IServiceBehavior>(), typeof(MyService));
serviceHost.Open();
Другие вопросы по тегам