Я думаю, что ответ на этот вопрос настолько очевиден, что никто не удосужился написать об этом, но уже поздно, и я действительно не могу разобраться с этим.
Я читал в контейнеры IoC (в данном случае Windsor), и мне не хватает того, как вы говорите с контейнером из различных частей вашего кода.
Я получаю DI, я уже некоторое время делаю DI для бедных (пустые конструкторы, вызывающие перегруженные конструкторы инъекций с реализациями параметров по умолчанию), и я полностью вижу преимущества контейнера. Тем не менее, я упускаю одну важную информацию; как вы должны ссылаться на контейнер каждый раз, когда вам нужен сервис из него?
Создаю ли я единый глобальный страховой агент, который я передаю? Конечно, нет!
Я знаю, что должен назвать это:
WindsorContainer container = new WindsorContainer(new XmlInterpreter());
(например), когда я хочу загрузить свою конфигурацию XML, но что мне делать с контейнером? Создает ли новый контейнер каждый раз после этого сохраненную загруженную конфигурацию через некоторые внутренние статические маджики или иным образом, или мне приходится каждый раз перезагружать конфигурацию (я полагаю, нет, или жизненные циклы не могут работать).
Неспособность понять это мешает мне понять, как работают жизненные циклы, и продолжать использовать некоторую удивительность IoC
Спасибо
Andrew