Sobes.tech
Junior — Middle

Μπορείτε να καταχωρίσετε περισσότερες από μία υλοποιήσεις μιας διεπαφής σε ένα μόνο κοντέινερ;

sobes.tech AI

Απάντηση από AI

Ναι, στα δοχεία εισαγωγής εξαρτήσεων (DI-δοχεία) σε C# μπορούν να καταχωρηθούν πολλές υλοποιήσεις μιας ίδιας διεπαφής. Αυτό γίνεται συνήθως όταν χρειάζονται διαφορετικές επιλογές συμπεριφοράς που μπορούν να επιλεγούν ανάλογα με το πλαίσιο.

Για παράδειγμα, στο Microsoft.Extensions.DependencyInjection, μπορείτε να καταχωρίσετε πολλές υλοποιήσεις ως εξής:

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

Όταν ζητείται το IEnumerable<IService>, το δοχείο θα επιστρέψει όλες τις καταχωρημένες υλοποιήσεις. Αν ζητηθεί απλώς το IService, θα επιστραφεί η τελευταία καταχωρημένη υλοποίηση (εξαρτάται από το συγκεκριμένο DI-δοχείο).

Για την επιλογή μιας συγκεκριμένης υλοποίησης, συχνά χρησιμοποιούνται καταχωρίσεις με ονόματα ή εργοστάσια, ή ενέσεις IEnumerable<IService> και επιλογή της απαραίτητης υλοποίησης προγραμματιστικά.