Junior — Middle
Come viene determinato il periodo di vita di un oggetto dopo la sua registrazione nel contenitore di iniezione delle dipendenze?
sobes.tech AI
Risposta dell'AI
La durata di un oggetto in un contenitore di dependency injection (DI) è determinata dal suo ciclo di vita (lifetime), che viene impostato durante la registrazione.
Le principali opzioni di ciclo di vita in C# (ad esempio, in Microsoft.Extensions.DependencyInjection):
- Transient: viene creatuna una nuova istanza ad ogni richiesta.
- Scoped: viene creata un'istanza per ambito (ad esempio, per richiesta HTTP in un'app web).
- Singleton: viene creata un'istanza alla prima richiesta e vive fino alla fine dell'applicazione.
Esempio di registrazione di un servizio con diversi tempi di vita:
services.AddTransient<IMyService, MyService>(); // nuovo oggetto ogni volta
services.AddScoped<IMyService, MyService>(); // un oggetto per sessione/richiesta
services.AddSingleton<IMyService, MyService>(); // un oggetto per tutta la durata
Pertanto, la durata di un oggetto dipende dal ciclo di vita scelto durante la registrazione nel contenitore DI.