Как использовать Common Service Locator в Ninject 2

Изменения в Ninject 2 говорят, что Ninject support Общий локатор сервисов, но как его использовать? Я не нахожу никакого руководства или образца.

Ответы

Ответ 1

Загрузка Ninject2 содержит CommonServiceLocator.NinjectAdapter.dll (в папке "расширения" zip файла). Добавьте эту DLL и Ninject.dll в свой проект.

На стартовом пути вашего приложения (после настройки ядра Ninject) вы можете использовать следующий код:

IKernel ninject = ...; 

var locator = new NinjectServiceLocator(ninject);

ServiceLocator.SetLocatorProvider(() => locator);

Обратите внимание, что Common Service Locator (CSL) - это библиотека, которая обеспечивает абстракцию над контейнерами IoC и содержит статический фасад (реализующий шаблон локатора службы). Это общий интерфейс, который разработчики могут использовать для предотвращения в зависимости от конкретной реализации IoC. CSL особенно полезен для разработчиков рамок. Разработчики приложений лучше используют шаблон инъекции зависимостей (DI). Когда DI используется правильно, нет необходимости использовать CSL в приложении. Хотя CSL больше подходит для разработки рамок, даже там я считаю использование CSL сомнительным. Полагаю, что большую часть времени использование такого общего интерфейса может быть устранено путем правильной разработки.