2010-04-12 3 views
7

Насколько я понимаю, IServiceLocator - это интерфейс для абстрагирования контейнера IoC? Я задаю вопрос относительно Призма, где я пытаюсь сделать replace Unity with Prism, и я вижу классы Prism, полагающиеся на IServiceLocator. Может ли кто-то прояснить роль интерфейса и когда он будет использоваться?Что такое интерфейс IServiceLocator?

А также; что такое Common Service Locator, и будет ли это полезно при работе с IServiceLocator?

ответ

12

IServiceLocator - это абстракция сервисного локатора. Контейнеры IoC являются своего рода надмножествами локаторов сервисов, поэтому они могут быть представлены IServiceLocator. Однако шаблон локатора сервисов более навязчивый, чем образец инъекции чистой зависимости, поэтому вы должны стараться, чтобы это было лучше, когда это было возможно.

CommonServiceLocator предоставляет интерфейс IServiceLocator и абстрактную реализацию этого интерфейса для определения общего поведения и помогает контейнерам IoC определять их адаптер IServiceLocator (каждый крупный контейнер IoC предоставляет такой адаптер).

Смотрите также:

+0

Thx! Хороший ответ. Не удается найти адаптер IServiceLocator для Ninject, хотя, возможно, он не считается основным? (ref * (каждый основной контейнер IoC предоставляет такой адаптер) *) – stiank81

+0

см. http://github.com/enkari/ninject/tree/2.0.0.0/src/CommonServiceLocator.NinjectAdapter/ –

+0

Cool - thx. Я уже написал то же самое, хотя .. – stiank81

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