Интеграция 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,

Другие вопросы по тегам