Sobes.tech
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.