Sobes.tech
Junior — Middle

Ինչպե՞ս է որոշվում օբյեկտի գոյության ժամկետը նրա գրանցումից հետո կախվածության ներդրման կոնտեյներով։

sobes.tech AI

Պատասխան AI-ից

Նշված օբյեկտի գոյության ժամկետը (lifetime) որոշվում է նրա կյանքի ցիկլով (lifetime), որը սահմանվում է գրանցման ժամանակ:

C#-ում հիմնական կյանքի ցիկլի տարբերակները (օրինակ, Microsoft.Extensions.DependencyInjection-ում).

  • Transient: նոր օրինակ ստեղծվում է յուրաքանչյուր հարցում:
  • Scoped: մեկ օրինակ ստեղծվում է յուրաքանչյուր շրջանակի համար (օրինակ, վեբ հավելվածում HTTP հարցում):
  • Singleton: մեկ օրինակ ստեղծվում է առաջին հարցումից և ապրում մինչև հավելվածի ավարտը:

Օրինակ՝ ծառայության գրանցում տարբեր կյանքի ժամկետներով:

services.AddTransient<IMyService, MyService>(); // նոր օբյեկտ ամեն անգամ
services.AddScoped<IMyService, MyService>();   // մեկ օբյեկտ սեսիայի/հարցման համար
services.AddSingleton<IMyService, MyService>(); // մեկ օբյեկտ ամբողջ աշխատանքային ժամանակահատվածում

Այսպիսով, օբյեկտի գոյության ժամկետը կախված է գրանցման ժամանակ ընտրված կյանքի ցիկլից՝ DI կոնտեյներում։