Junior — Middle
Kā tiek noteikts objekta pastāvēšanas laiks pēc tā reģistrēšanas atkarību injekcijas konteinerā?
sobes.tech AI
Atbilde no AI
Objekta pastāvēšanas laiks (lifetime) ir atkarīgs no tā dzīves cikla (lifetime), kas tiek noteikts reģistrācijas laikā.
Galvenās dzīves cikla iespējas C# (piemēram, Microsoft.Extensions.DependencyInjection):
- Transient: jauns eksemplārs tiek izveidots katrā pieprasījumā.
- Scoped: viens eksemplārs tiek izveidots katram kontekstam (piemēram, HTTP pieprasījumam tīmekļa lietojumprogrammā).
- Singleton: viens eksemplārs tiek izveidots pirmajā pieprasījumā un pastāv līdz lietojumprogrammas beigām.
Piemērs, kā reģistrēt pakalpojumu ar dažādiem dzīves laikiem:
services.AddTransient<IMyService, MyService>(); // jauns objekts katru reizi
services.AddScoped<IMyService, MyService>(); // viens objekts sesijas/pieprasījuma laikā
services.AddSingleton<IMyService, MyService>(); // viens objekts visa darba laikā
Tādējādi, objekta pastāvēšanas laiks ir atkarīgs no izvēlētā dzīves cikla reģistrācijas laikā DI konteinerā.