Внедрение вашего IoC-контейнера?

Я все утро занимался исследованиями, пытаясь найти лучшие практики для доступа к вашему IoC. После добавления инъекции конструктора в ваши классы вам по-прежнему необходимо получить доступ к contianer из классов, которые могут находиться глубоко в графе объектов вашего приложения. В моем случае я использую MVVM в WPF, и некоторые из моих моделей представления должны создавать другие модели представления, и они будут использовать для этого контейнер. Но вопрос в том, откуда взять контейнер. Есть ли смысл вводить его и разносить? Можно ли сделать из него инъекционный синглтон? Является ли фабрика, обслуживающая синглтон, более подходящей?

Какие есть варианты и компромиссы?

Обновление

Я нашел этот замечательный доклад Мэтта Хинце, который охватывает многие области IoC: http: / /www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/04/08/inversion-of-control-in-action-by-matt-hinze-north.aspx

Похоже, один ответ - использовать функцию сканирования и сохранять конфигурации IoC в реестрах в каждой сборке, а затем во время сканирования эти конфигурации реестра будут добавлены.

Можно ли рассмотреть другие подходы? Особенно с учетом того, что Мэтт продемонстрировал использование шаблона ServiceLocator, в то время как Марк Симан называет это анти-шаблоном. Обратите внимание на то, что Мэтт предостерег от использования шаблона, а также определение Service Locator, данное Марком (http://blog.ploeh.dk/Trackback.aspx? guid = 5f05c086-295b-41e5-a50a-ed0cd77ac4bd) кажется другим, чем то, что продемонстрировал Мэтт.

6
задан Ryan Vice 5 December 2011 в 13:29
поделиться