Для большинства целей вам понадобится IComponentContext
или ILifetimeScope
.Они автоматически предоставляются Autofac, поэтому все, что вам нужно сделать, это взять зависимость (конструктор) от одного из них, и текущий экземпляр будет внедрен.
Оба интерфейса предоставляют стандартные операции Resolve()
, тогда как ILifetimeScope
расширяет IComponentContext
, добавляя методы для запуска новых вложенных времен жизни.
Компоненты, которые хотят использовать службы контейнера для доступа к другим компонентам, должны делать это в своей собственной области, а не в «глобальном»IContainer
, чтобы можно было вернуть правильный экземпляр.Например, в HTTP-запросе для текущего запроса будет введен IComponentContext
или ILifetimeScope
.
Большинство проблем, требующих внедрения контекста, также можно (часто более изящно) преодолеть с помощью типов отношений -см .: http://autofac.readthedocs.org/en/latest/resolve/relationships.html.