@Oxoron
Шарпер

Где хранить IoC контейнер?

Добрый вечер.
Начинаю большой проект, и чувствую, что пришло время для использования IoC-контейнера, точнее, UnityContainer. Как создать экземпляр контейнера - понятно. Как настроить в нем связи интерфейс-дефолтный_объект - понятно. Как попросить у экземпляра контейнера создать экземпляр дефолтного класса для интерфейса IAnyInterface - понятно.

Непонятно, где хранить тот самый экземпляр UnityContainer? Создавать поле в статичном классе типа
public readonly UnityContainer container = GetInitedContainer();
?
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
@VanKrock
Если это будет ApplicationContainer, то можно реализовать синглтоном.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
om2804
@om2804
А для чего обеспечивать глобальный доступ к контейнеру? Можно юзать инъекцию в конструктор?! Правда, если зависимостей много, то конструктор разрастается (у каждой реализации есть свои минусы), зато нет проблем с тестируемостью (и у каждой есть плюсы).
У синглтона больше проблем, чем плюсов. Если всё же синглтон, то посмотрите в сторону Ambient Context реализации
Вообще многое зависит от окружения, реализации и т.п.

Статья по теме habrahabr.ru/post/62830
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы