Sobes.tech
Junior — Middle

Se poate înregistra mai mult de o implementare a unei interfețe într-un singur container?

sobes.tech AI

Răspuns de la AI

Da, în containerele de injecție a dependențelor (DI) în C# se pot înregistra mai multe implementări ale aceleiași interfețe. De obicei, acest lucru se face atunci când sunt necesare diferite opțiuni de comportament care pot fi selectate în funcție de context.

De exemplu, în Microsoft.Extensions.DependencyInjection, puteți înregistra mai multe implementări astfel:

services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();

Când se solicită IEnumerable<IService>, containerul va returna toate implementările înregistrate. Dacă se solicită doar IService, va fi returnată ultima implementare înregistrată (depinde de containerul DI specific).

Pentru a alege o implementare specifică, se folosesc adesea înregistrări numite sau fabrici, sau se injectează IEnumerable<IService> și se selectează implementarea necesară programatic.