Sobes.tech
Back to questions
Junior — Middle
72

Как определяется срок существования объекта после его регистрации в контейнере внедрения зависимостей?

Companies where asked
OZONOZON

Answer from AI

sobes.tech AI

Срок существования объекта в контейнере внедрения зависимостей (DI) определяется его жизненным циклом (lifetime), который задаётся при регистрации.

Основные варианты жизненного цикла в C# (например, в Microsoft.Extensions.DependencyInjection):

  • Transient: новый экземпляр создаётся при каждом запросе.
  • Scoped: один экземпляр создаётся на область (например, на HTTP-запрос в веб-приложении).
  • Singleton: один экземпляр создаётся при первом запросе и живёт до завершения работы приложения.

Пример регистрации сервиса с разным временем жизни:

services.AddTransient<IMyService, MyService>(); // новый объект каждый раз
services.AddScoped<IMyService, MyService>();   // один объект на сессию/запрос
services.AddSingleton<IMyService, MyService>(); // один объект на всё время работы

Таким образом, срок существования объекта зависит от выбранного жизненного цикла при регистрации в DI-контейнере.