τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ορισμός : Η αντιστροφή του ελέγχου είναι μια αρχή σχεδιασμού που αντιστρέφει τη ροή ελέγχου στον παραδοσιακό προγραμματισμό. Στα παραδοσιακά μοντέλα προγραμματισμού, οι εξαρτήσεις μεταξύ των στοιχείων δημιουργούνται και διατηρούνται εσωτερικά από τα ίδια τα στοιχεία. Στην αντιστροφή της λειτουργίας ελέγχου, αυτή η εξάρτηση διαχειρίζεται ένα εξωτερικό κοντέινερ (όπως το πλαίσιο Spring, Microsoft.Extensions.DependencyInjection στο .NET, κ.λπ.). μέσω του εξωτερικού δοχείου που απαιτούνται εξαρτήσεις.
κύρια ιδέα: Μετακινεί τη δημιουργία αντικειμένων και τη διαχείριση των εξαρτήσεων μεταξύ τους από τα ίδια τα αντικείμενα σε εξωτερικά δοχεία.
πλεονέκτημα:
ορισμός : Η ένεση εξάρτησης είναι ένας συγκεκριμένος τρόπος για την επίτευξη αντιστροφής του ελέγχου. Περιλαμβάνει τη μετάδοση εξαρτήσεων (υπηρεσιών ή αντικειμένων) σε κλάσεις αντί να αφήνουμε τις κλάσεις να τις δημιουργούν οι ίδιες.
Μέθοδος υλοποίησης:
ορισμός :Το κοντέινερ IOC είναι ένα πλαίσιο για τη διαχείριση του κύκλου ζωής αντικειμένων και των εξαρτήσεων. Δημιουργεί αυτόματα αντικείμενα με βάση τη διαμόρφωση (όπως αρχεία XML, σχολιασμούς ή διαμόρφωση κώδικα) και εισάγει εξαρτήσεις σε αυτά τα αντικείμενα.
αποτέλεσμα:
Στη C#, μπορείτε να χρησιμοποιήσετε μια ποικιλία κοντέινερ IOC για τη διαχείριση εξαρτήσεων, όπως το Microsoft.Extensions.DependencyInjection (το ενσωματωμένο κοντέινερ DI του .NET Core και νεότερες εκδόσεις), το Autofac κ.λπ. Ακολουθεί το Microsoft.Extensions.DependencyInjection ως παράδειγμα για να εισαγάγει τον τρόπο χρήσης των κοντέινερ IOC για τη διαχείριση εξαρτήσεων σε έργα C#.
Οι υπηρεσίες χρησιμοποιούνται συνήθως σε εφαρμογές .NETProgram.cs
ήStartup.cs
(για έργα ASP.NET Core) που χρησιμοποιούνται σεIServiceCollection
διεπαφή για εγγραφή.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IMyService, MyService>(); // 将MyService注册为单例服务
// 其他服务注册
}
Εισάγετε εξαρτήσεις στον ελεγκτή, την υπηρεσία ή οποιαδήποτε άλλη κλάση μέσω του κατασκευαστή.
public class MyController : Controller
{
private readonly IMyService _myService;
public MyController(IMyService myService)
{
_myService = myService;
}
// ... 控制器的其他代码
}
Στο παραπάνω παράδειγμα,MyController
Η κλάση εγχέεται μέσω του κατασκευαστήIMyService
Η υλοποίηση της διεπαφής (δηλ.MyService
είδος).Με αυτόν τον τρόπο, ότανMyController
Όταν δημιουργηθεί, το κοντέινερ της ΔΟΕ θα γίνει αυτόματαIMyService
Η υλοποίηση εγχέεται στον κατασκευαστή.