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 կոնտեյներում։