Не думаю, что есть какая-либо документация по этому поводу, но на самом деле все довольно просто. В этом нет магии. Поскольку 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
.
тривиально.