Sobes.tech
Junior — Middle

Jak określa się okres istnienia obiektu po jego zarejestrowaniu w kontenerze wstrzykiwania zależności?

sobes.tech AI

Odpowiedź od AI

Czas życia obiektu w kontenerze wstrzykiwania zależności (DI) jest określany przez jego cykl życia (lifetime), który jest ustawiany podczas rejestracji.

Główne opcje cyklu życia w C# (np. w Microsoft.Extensions.DependencyInjection):

  • Transient: nowy egzemplarz jest tworzony przy każdym żądaniu.
  • Scoped: jeden egzemplarz jest tworzony na zakres (np. na żądanie HTTP w aplikacji webowej).
  • Singleton: jeden egzemplarz jest tworzony przy pierwszym żądaniu i żyje do zakończenia działania aplikacji.

Przykład rejestracji serwisu z różnym czasem życia:

services.AddTransient<IMyService, MyService>(); // nowy obiekt za każdym razem
services.AddScoped<IMyService, MyService>();   // jeden obiekt na sesję/żądanie
services.AddSingleton<IMyService, MyService>(); // jeden obiekt na cały czas działania

W związku z tym, czas życia obiektu zależy od wybranego cyklu życia podczas rejestracji w kontenerze DI.