Sobes.tech
Junior — Middle

Hogyan határozzák meg egy objektum élettartamát a függőség-injektálási konténerben való regisztráció után?

sobes.tech MI

Válasz az MI-től

Egy objektum létezési ideje (lifetime) a dependency injection (DI) konténerben a regisztráció során beállított életciklustól (lifetime) függ.

A C#-ban (például a Microsoft.Extensions.DependencyInjection-ben) a fő életciklus lehetőségek:

  • Transient: minden kérésnél új példány jön létre.
  • Scoped: egy példány jön létre egy adott scope-ban (például egy webalkalmazásban minden HTTP-kérésnél).
  • Singleton: az első kéréskor jön létre, és az alkalmazás végéig él.

Példa egy szolgáltatás különböző életidejű regisztrálására:

services.AddTransient<IMyService, MyService>(); // minden alkalommal új objektum
services.AddScoped<IMyService, MyService>();   // egy objektum minden session/ kérés esetén
services.AddSingleton<IMyService, MyService>(); // egy objektum az egész alkalmazás során

Így az objektum létezési ideje a regisztrációkor kiválasztott életciklustól függ a DI-konténerben.