Sobes.tech
Junior — Middle

Vai vienā konteinerā var reģistrēt vairāk nekā vienu interfeisa realizāciju?

sobes.tech AI

Atbilde no AI

Jā, C# atkarībā no piegādes (DI) konteineriem var reģistrēt vairākas vienas interfeisa realizācijas. Parasti tas tiek darīts, ja ir nepieciešamas dažādas uzvedības iespējas, kuras var izvēlēties atkarībā no konteksta.

Piemēram, Microsoft.Extensions.DependencyInjection var reģistrēt vairākas realizācijas šādi:

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

Kad tiek pieprasīts IEnumerable<IService>, konteineris atgriezīs visas reģistrētās realizācijas. Ja tiek pieprasīts tikai IService, tiks atgriezta pēdējā reģistrētā realizācija (tas ir atkarīgs no konkrētā DI konteineris).

Lai izvēlētos konkrētu realizāciju, bieži izmanto nosauktas reģistrācijas vai fabrikas, vai injicē IEnumerable<IService> un programmatiski izvēlas nepieciešamo realizāciju.