У меня есть структура с уровнем данных DDD, который использует шаблон локатора службы. Однако в настоящее время я использую глобальный статический класс ServiceLocator
, который хранит все ссылки. Я хотел бы реорганизовать это в правильную реализацию, где классы реализуют интерфейс IServiceProvider
и где я удаляю глобальный статический класс ServiceLocator
.Шаблон локатора службы и DDD
Теперь почти везде не требуется распространять существующие классы с интерфейсом IServiceProvider
, за исключением классов сущностей. Проблема в том, что мне было бы очень странно, если бы классы объектов должны были реализовать IServiceProvider
, но мне нужен способ получить доступ к поставщику услуг, чтобы иметь возможность разрешать репозитории через мой контейнер IoC.
Что было бы лучшим способом реализовать шаблон локатора сервисов без необходимости реализовать IServiceProvider
на моих объектах?
Можете ли вы разместить ссылку на шаблон, на который вы ссылаетесь? – jgauffin
Google имеет множество хороших результатов: http://www.google.com/search?q=service%20locator%20design%20pattern. Серия в http://stefanoricciardi.com/2009/09/25/service-locator-pattern-in-csharpa-simple-example/ идет немного подробнее. То, что я конкретно пытаюсь избавиться, - это шаблон singleton. –
Да, но это имеет нулевой смысл. Ничто в этих шаблонах не приводит к тому, что каждый объект подвергает IServiceProvider. – TomTom