Как использовать Common Service Locator в Ninject 2 - PullRequest
14 голосов
/ 20 сентября 2010

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

1 Ответ

27 голосов
/ 20 сентября 2010

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

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

IKernel ninject = ...; 

var locator = new NinjectServiceLocator(ninject);

ServiceLocator.SetLocatorProvider(() => locator);

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

...