Sobes.tech
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.