Это не то, как работают пожизненные области видимости.
Если вы зарегистрируете что-то как одноэлементное (SingleInstance
), оно будет разрешено из корневой области времени жизни, а не дочерней области. Его зависимости _ также будут разрешены из корневой области (контейнера), а не дочерней области.
Это подробно рассмотрено в теме документации 'Зависимости в неволе'.
По сути, у вас не может быть синглтона, который принимает зависимость объема экземпляра на запрос или дочернюю область жизни. У вас может быть синглтон, который принимает экземпляр-на-зависимость (который будет разрешен только один раз - из контейнера, а не дочерней области - и затем будет удерживаться); или у вас может быть одноэлементный объект, который принимает компонент «экземпляр на всю жизнь», а используемая область действия будет корневым контейнером, эффективно создавая один объект из всего, что вы потребляете.
Тем не менее, вопрос, который вы действительно задаете: «Как получить контейнер в ASP.NET Core», и ответ на этот вопрос также есть в документации, в ASP.NET Core, «Быстрый старт» ( Без ConfigureContainer) "раздел.
- Переключите метод
ConfigureServices
для возврата IServiceProvider
вместо void
- Создайте контейнер самостоятельно и сохраните ссылку на него по своему выбору.
- Возврат
new AutofacServiceProvider(container)
в конце ConfigureSerivces
.
В документах приведен полный пример кода.
Это не поможет вам в более крупной проблеме, но, по крайней мере, вы можете взять контейнер и провести необходимые эксперименты.