Использование Prism с Ninject - PullRequest
8 голосов
/ 12 апреля 2010

Кто-нибудь использует Prism Framework с Ninject вместо Unity? Мне нужна некоторая функциональность, которую Unity еще не поддерживает, и я решил переключить контейнер IoC на Ninject. Я немного борюсь с заменой, хотя ..

Что мне нужно использовать из Prism, так это EventAggregator и RegionManager. Я видел этот образец , который фактически заменяет, но это написано для более старой версии Prism, и некоторые классы, кажется, изменились и т. Д. Так что я в конечном итоге запутался после того, как посмотрел, что приложил некоторые усилия в попытке переписать это.

Итак - мой вопрос в основном: Как я могу заменить Unity на Ninject?

Каковы необходимые шаги? Сначала я предполагал, что смогу написать простой загрузчик, который создает и настраивает контейнер Ninject и использует его для разрешения всех других объектов. Я связываю IEventAggregator с EventAggregator и IRegionManager с RegionManager, но он завершается неудачно при создании оболочки и вызывается RegionManager.CreateRegion. Проблема в том, что мне кажется, что мне нужно установить ServiceLocator где-нибудь, так как он не работает в этой строке:

IServiceLocator locator = ServiceLocator.Current;

Есть идеи и советы по пути?

Ответы [ 2 ]

5 голосов
/ 10 апреля 2011

Я только что создал проект github, который использовал Ninject 2.0 и Prism 4.0, который должен удовлетворить потребности любого, кто хочет поменять единицы или MEF для Ninject

Сайт находится здесь: Призма Ninject Extension

3 голосов
/ 12 апреля 2010

Майкл Харт реализовал необходимые биты для Ninject in Prism "

Вам нужно только реализовать свой собственный NinjectBoostrapper и реализацию IServiceLocator, использующую Ninject. Код в ссылке делает всю эту работу за вас.

...