Это зависит от вашего определения того, что на самом деле означает «Переходный процесс».
Простой Инжектор считает, что временные регистрации продолжаются только в течение короткого времени; временный , то есть недолговечный и не использованный повторно. По этой причине Simple Injector предотвращает попадание компонентов Transient в потребителей Scoped и Singleton, так как ожидается, что они прослужат дольше, что в противном случае могло бы привести к несоответствию образа жизни. ( источник )
Некоторые другие DI-контейнеры используют другое определение для «Transient». Например, .NET Core DI Container (MS.DI) рекомендует, чтобы ваши временные регистрации были « облегченными службами без сохранения состояния. » Поскольку предполагается, что они не сохраняют состояние, безопасно вводить их в потребителей любым другое время жизни, пока у них нет собственных зависимостей (под). «С учетом состояния» в контексте MS.DI обычно означает ограниченную зависимость. Определение переходного процесса в MS.DI идентично тому, что Autofac называет Instance Per Dependency . IMO, наименование Autofac является более правильным, потому что концептуально существует большая разница между двумя определениями переходного процесса, и я полагаю, что большинство DI-контейнеров следуют «, действующему только в течение короткого времени; временное » определение.
Пока ваш временный компонент не имеет состояния , и пока этот компонент не содержит зависимостей с состоянием, нет никакого вреда для внедрения его в одноэлементный (или ограниченный) потребитель. Впрочем, введение такого компонента без сохранения состояния в синглтон все еще делает этот компонент долгоживущим , что является чем-то совершенно иным, чем недолговечным . Поскольку Simple Injector не знает, содержит ли ваш компонент состояние, он считает все переходные процессы недолговечными и поэтому предупреждает вас о введении переходных процессов в синглтоны.