Есть три типа срока жизни объектов в DI контейнере (по крайней мере от Microsoft, который тут рассматривается):
- Singleton - Объект создается только один раз на срок жизни программы, соответственно все кто его запросил получат одну и ту же сущность;
- Scoped - Объект создается только один раз в пределах скоупа, и эта сущность будет передаваться всем кто ее запрашивал в пределах этого скоупа , а после этого удаляется (и вызывается Dispose, если внедрен интерфейс IDisposable);
- Transient - Объект создается по каждому запросу, то есть DI всегда будет подсовывать новую сущность;
Это механизм изоляции и ограничения срока жизни объекта. Если рассматривать ASP.NET, то каждый запрос к серверу обрабатывается в своем скоупе.