2011-06-10 2 views
1

Я использую Ninject в качестве моего загрузочного устройства (в основном из-за регистрации на основе конвенций и его свободного API). Мы используем Prism 4 Navigation Framework RequestNavigateAsync для перехода от одной страницы к другой. API просматривает контейнер для именованного экземпляра объекта и разрешает view/viewmodel, к которому он должен перейти. Вот синтаксис Unity для этого.Регистрация Ninject с Silverlight и Prism

Его рекоммендуется использовать container.RegisterType («InboxView» вместо container.RegisterType («InboxView»)

В Ninject, как я могу получить подобный эффект, так что гели с основы навигации легко? вы можете помочь обеспечить некоторый код/​​документацию, которая показывает, как зарегистрировать именованные экземпляры в Ninject (которые могли бы помочь).

ответ

2

Предполагая, что это ваш синтаксис в Unity

var container = new UnityContainer(); 
container.RegisterType<object, InboxView>("InboxView"); 

Эквивалентный синтаксис в Ninject равен

var kernel = new StandardKernel(); 
kernel.Bind<object>().To<InboxView>().Named("InboxView"); 
+0

Это похоже на правильный синтаксис. Я могу увидеть экземпляр объекта, когда я использую servicelocator, чтобы получить экземпляр this.serviceLocator.GetInstance (кандидатTargetContract). Вот как Prism создает экземпляр внутри своей базы кода. Однако, так или иначе, это еще не завершает процесс навигации. Есть идеи? Кто-нибудь использовал навигационную систему Prism с Ninject.? – bkhanal

+0

Наконец-то он работал. Похоже, что servicelocator не был правильно настроен в загрузчике и после прохождения кода Prism - я исправил эту часть. Спасибо за синтаксис. – bkhanal

+0

@bkhanal Я делаю 'ServiceLocator.SetLocatorProvider (Injecter.Get );' в моем загрузчике (получает экземпляр singleton моего NinjectServiceLocator). NinjectServiceLocator возвращает представление, но contentcontrol с представлением остается пустым. Как вы его решили? – LueTm

Смежные вопросы