Интеграция Castle Monorail и Ninject 2
Я хочу использовать Ninject 2 на замке монорельса. Ища в гугле, я ничего не нашел по этому поводу.
Я знаю, что есть Windsor, который волшебным образом может интегрироваться с монорельсом, так же, как Ninject (с расширением MVC) с ASP.NET MVC.
Какие шаги мне нужно сделать, чтобы интегрировать DI Framework (кроме Windsor) с Monorail? (любая ссылка на сайт, учебное пособие или пример кода (желательно с использованием Ninject 2))
к вашему сведению, я использую C#
1 ответ
Я не думаю, что есть какая-либо документация по этому поводу, но на самом деле все довольно просто. В этом нет магии. Поскольку MonoRail и Windsor - это совершенно разные проекты, все, что вам нужно сделать, это посмотреть, как они интегрируются, а затем сделать то же самое для Ninject вместо Windsor.
Конкретнее, начните с MonoRailFacility, который является корнем интеграции. Вместо Windsor вы должны использовать модуль Ninject. Обратите внимание, что он регистрирует некоторые компоненты: IControllerTree, IWizardPageFactory и т. Д. Наиболее важным является IControllerFactory, который позволяет разрешать контроллеры из контейнера (в вашем случае Ninject). Вы можете оставить все остальные как значения по умолчанию (например, IFilterFactory/DefaultFilterFactory) и реализовать их по мере необходимости (то есть, когда вам нужно управление контейнерами фильтров).
Тогда позвони ServiceProviderLocator.Instance.AddLocatorStrategy(new NinjectAccessorStrategy());
где NinjectAccessorStrategy
это реализация IAccessorStrategy
который возвращает ядро Ninject как Castle.Core.IServiceProviderEx
(который является ничем иным, как тривиальным расширением System.IServiceProvider
). Поскольку ядро Ninject уже реализует IServiceProvider
написать адаптер для IServiceProviderEx
,