На этой странице "Лучшие практики" AutoFac (http://code.google.com/p/autofac/wiki/BestPractices):
Не пропускайте контейнер вокруг Предоставление компонентам доступа к контейнеру или сохранение его в общедоступном статическом свойстве или создание таких функций, как Resolve(), доступных в глобальном классе "IoC", приводит к поражению цели использования инъекции зависимостей. Такие конструкции имеют больше общего с шаблоном Locator. Если компоненты имеют зависимость от контейнера, посмотрите, как они используют контейнер для извлечения служб, и добавьте эти службы к аргументам конструктора, зависящим от компонента (зависимостям).
Итак, что было бы лучшим способом, чтобы один компонент "динамически" создавал экземпляр другого? В их втором абзаце не рассматривается случай, когда компонент, который "может" быть создан, будет зависеть от состояния системы. Или когда компоненту A необходимо создать X-номер компонента B.