Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от AI

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

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

  • Transient: нов екземпляр се създава при всяко искане.
  • Scoped: един екземпляр се създава за област (например, за HTTP заявка в уеб приложение).
  • Singleton: един екземпляр се създава при първото искане и живее до приключване на приложението.

Пример за регистрация на услуга с различно време на живот:

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

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