«Способ» Autofac должен иметь параметр конструктора IContext
. Autofac внедрит объект, который можно использовать для разрешения типов.
Контекст обычно является контейнером за сценой, IContainer
реализует интерфейс IContext
, хотя IContext
ограничен только выполнением разрешений.
Я знаю, что контейнер не должен быть «чрезмерно использован», но у меня есть, как OP, классы, которые требуют разрешения типов, которые не известны заранее (и, следовательно, не могут использоваться в качестве параметров конструктора). Я считаю полезным в этих случаях думать о контейнере как о еще одном сервисе, который можно использовать для разрешения других сервисов, и внедрять его, как любой другой сервис.
Если вы чувствуете, что использование IContext связывает вас с Autofac, и вам необходимо абстрагироваться от этого с помощью собственного интерфейса, это всего лишь вопрос регистрации класса-оболочки IContext
в вашем контейнере.
Обновление: в Autofac 2, IContext
называется IComponentContext
.