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 контейнера.