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.