Μπορείτε να καταχωρίσετε περισσότερες από μία υλοποιήσεις μιας διεπαφής σε ένα μόνο κοντέινερ;
sobes.tech AI
Απάντηση από AI
Ναι, στα δοχεία εισαγωγής εξαρτήσεων (DI-δοχεία) σε C# μπορούν να καταχωρηθούν πολλές υλοποιήσεις μιας ίδιας διεπαφής. Αυτό γίνεται συνήθως όταν χρειάζονται διαφορετικές επιλογές συμπεριφοράς που μπορούν να επιλεγούν ανάλογα με το πλαίσιο.
Για παράδειγμα, στο Microsoft.Extensions.DependencyInjection, μπορείτε να καταχωρίσετε πολλές υλοποιήσεις ως εξής:
services.AddTransient<IService, ServiceImplementationA>();
services.AddTransient<IService, ServiceImplementationB>();
Όταν ζητείται το IEnumerable<IService>, το δοχείο θα επιστρέψει όλες τις καταχωρημένες υλοποιήσεις. Αν ζητηθεί απλώς το IService, θα επιστραφεί η τελευταία καταχωρημένη υλοποίηση (εξαρτάται από το συγκεκριμένο DI-δοχείο).
Για την επιλογή μιας συγκεκριμένης υλοποίησης, συχνά χρησιμοποιούνται καταχωρίσεις με ονόματα ή εργοστάσια, ή ενέσεις IEnumerable<IService> και επιλογή της απαραίτητης υλοποίησης προγραμματιστικά.