Обновить 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();