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