Junior — Middle
Може ли у оквиру једног контејнера регистровати више од једне варијанте реализовања једног интерфејса?
sobes.tech АИ
Одговор од АИ
Da, u kontejnerima za injekciju zavisnosti (DI-kontejnerima) u C# može se registrovati više implementacija iste interfejsa. To se obično radi kada su potrebne različite opcije ponašanja koje se mogu birati u zavisnosti od konteksta.
Na primer, u Microsoft.Extensions.DependencyInjection, možete registrovati više implementacija ovako:
services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();
Kada se zahteva IEnumerable<IService>, kontejner će vratiti sve registrovane implementacije. Ako se zahteva samo IService, biće vraćena poslednja registrovana implementacija (zavisi od konkretnog DI-kontejnera).
Za izbor konkretne implementacije često se koriste imenovane registracije ili fabrike, ili se injektuje IEnumerable<IService> i programatski bira potrebnu implementaciju.