Πολλά βιβλία αναφέρουν έννοιες όπως η έγχυση εξάρτησης και η αντιστροφή ελέγχου, οι οποίες στοχεύουν στην επίτευξη χαλαρά συζευγμένων επιπέδων, στοιχείων και σκοπών κλάσης.
Είναι σύνηθες να χρησιμοποιείται η κλάση Repository για να διαχωριστεί η άμεση σύνδεση μεταξύ του ελεγκτή και του μοντέλου. Προκειμένου να αποσυνδεθεί η στενή σύνδεση μεταξύ της κλάσης Repository και του Controller, συνήθως δεν ορίζεται και δεν δημιουργείται άμεσα από την κλάση Repository, αλλά εγχέεται στο καθορισμένο Repository μέσω της μεθόδου κατασκευής του Controller.
Τα δημοφιλή δοχεία IoC είναι: Ninject, Autofac, Unity.
Ακολουθεί μια σύντομη εξήγηση του τρόπου χρήσης του Autofac injection MVC5 και Webapi2.
1. Χρησιμοποιήστε το nupkg για να αναφέρετε τα Autofac, Autofac.Mvc5 και Autofac.Webapi2
PM> install-package autofac -έκδοση 3.5.0
PM> πακέτο εγκατάστασης autofac.mvc5
PM> install-package autofac.webapi2 (Σημείωση: Εάν χρησιμοποιείτε webapi2 στο έργο σας, πρέπει να είναι webapi2 και όχι webapi εδώ, διαφορετικά το "Rewrite member Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()" θα εμφανιστεί κατά το χρόνο εκτέλεσης) παραβίασε τους κανόνες ασφάλειας κληρονομιάς. Η προσβασιμότητα ασφαλείας της μεθόδου που παρακάμπτεται πρέπει να ταιριάζει με την ασφαλή προσβασιμότητα της μεθόδου που έχει ξαναγραφτεί. Λανθασμένος. )
2. Καταχωρίστε το στοιχείο.
3. Δημιουργήστε ένα κοντέινερ για μελλοντική χρήση.
var container=οικοδόμος. Build(); 4. Δημιουργήστε ένα εύρος διάρκειας ζωής από το κοντέινερ.
5. Χρησιμοποιήστε αυτό το Lifetime Scope για να αναλύσετε περιπτώσεις στοιχείων.
config. DependencyResolver = νέο AutofacWebApiDependencyResolver(container); Για να καταχωρίσετε ένα κοντέινερ API, πρέπει να χρησιμοποιήσετε το αντικείμενο HttpConfiguration DependencyResolver.SetResolver(νέο AutofacDependencyResolver(κοντέινερ)); Καταχωρίστε το κοντέινερ MVC 6. Στη μέθοδο Register της κλάσης WebApiConfig, καλέστε τον παραπάνω κωδικό βήματος και περάστε το αντικείμενο HttpConfiguration.
Το πλεονέκτημα του autofac είναι ότι μπορεί να αποσυνδεθεί ταυτόχρονα χωρίς την ανάγκη διαμόρφωσης. Το autofac εφαρμόζει καλύτερα την έννοια του "η σύμβαση είναι μεγαλύτερη από τη διαμόρφωση" στο MVC.
|