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