Я хочу использовать расширение Ninject.Wcf для создания параметризованного экземпляра хоста службы.
Например, у меня есть класс MyWCFHandler
с единственным следующим конструктором:
public MyWCFHandler(UserManager manager)
{
_manager = manager;
}
Но когда я пишу var myServiceHost = new ServiceHost(typeof(MyWCFHandler));
, у меня нет возможности передать объект зависимости конструктору.
Я не хочу связываться с пользовательским ServiceHost, подобным предложенному в Как передать значения вконструктор в моей службе wcf?
Я решил пойти по пути Ninject, но не в состоянии полностью понять, как действовать в моей ситуации.
Вот что я понимаю: расширение WCF в Ninject работает:
- Ссылка Ninject и Ninject.Extensions.WCF в моем проекте.
Создание классакоторый наследует модуль Ninject и пишет что-то вроде:
internal class ServiceModule : NinjectModule
{
public override void Load()
{
Bind<IUserManager>().To<UserManager>().WithConstructorParameters(myUserManagerIwantToUseInWCFHandler);
}
}
Добавление ядра, инициализированного с новым ServiceModule (), в KernelContainer.
Используйте NinjectServiceHost следующим образом:
var service = KernelContainer.Kernel.Get<IMyWCFHandler>();
_host = new NinjectServiceHost( service );
И там мой хост должен быть готов к открытию.
Вопросы:
Как передать параметры моего конструктора в NinjectModule?Должен ли я создать экземпляр модуля NinjectModule, когда я буду готов связать с ним параметр?Как передать их в метод Get?
К сожалению, нет ни одного примера для простого показа параметризованного запуска ServiceHost.Меня даже не волнует, пользуюсь ли я этим Ninject.Какое бы решение ни показало хороший пример - я в порядке, поскольку я просто решаю, какой контейнер IoC использовать.