Junior — Middle
Bir konteynerdə bir interfeys üçün bir neçə tətbiqi qeyd etmək mümkündürmü?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, C#-də bağımlılıq injeksiyası (DI) konteynerlərində eyni interfeys üçün bir neçə icra qeydiyyata alına bilər. Bu, adətən, kontekstə görə seçim edilə bilən müxtəlif davranış variantlarına ehtiyac olduqda edilir.
Məsələn, Microsoft.Extensions.DependencyInjection-də aşağıdakı kimi qeydiyyatdan keçirmək olar:
services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();
IEnumerable<IService> tələb olunduqda, konteyner bütün qeydiyyata alınmış icraları qaytaracaq. Əgər sadəcə IService tələb olunursa, ən son qeydiyyata alınmış icra qaytarılır (bu, konkret DI konteynerindən asılıdır).
Xüsusi icranı seçmək üçün adlandırılmış qeydiyyatlar və ya fabriklər istifadə olunur, və ya IEnumerable<IService> enjekte edilir və proqram təminatı ilə lazım olan icra seçilir.