Junior — Middle
Kuidas määratakse objekti olemasoluperiood pärast selle registreerimist sõltuvuste süstimise konteineris?
sobes.tech AI
Vastus AI-lt
Objekti olemasolu aeg (lifetime) määratakse tema elutsükli (lifetime) kaudu, mis määratakse registreerimisel.
Peamised elutsükli valikud C#-s (näiteks Microsoft.Extensions.DependencyInjection):
- Transient: iga taotluse korral luuakse uus eksemplar.
- Scoped: üks eksemplar luuakse iga konteksti (näiteks, iga HTTP-päring web-rakenduses).
- Singleton: üks eksemplar luuakse esimesel taotluse korral ja kestab rakenduse lõpuni.
Näide teenuse registreerimisest erineva eluea ajaga:
services.AddTransient<IMyService, MyService>(); // uus objekt iga kord
services.AddScoped<IMyService, MyService>(); // üks objekt sessiooni/päringu kohta
services.AddSingleton<IMyService, MyService>(); // üks objekt kogu tööaja jooksul
Seega, objekti olemasolu aeg sõltub valitud elutsüklist registreerimisel DI konteineris.