Multe cărți menționează concepte precum injectarea dependențelor și inversiunea de control, toate având ca scop realizarea unor straturi, componente și scopuri de clasă cuplate slab.
Este obișnuit să se folosească clasa Repository pentru a separa conexiunea directă dintre Controler și Model. Pentru a deconecta conexiunea strânsă dintre clasa Repository și Controller, aceasta de obicei nu este definită și instanțiată direct de clasa Repository, ci injectată în Repository-ul specificat prin metoda de construcție a Controller-ului.
Containerele IoC populare sunt: Ninject, Autofac, Unity.
Iată o scurtă explicație despre cum să folosești injecția Autofac MVC5 și Webapi2.
1. Folosiți nupkg pentru a face referire la Autofac, Autofac.Mvc5 și Autofac.Webapi2
PM> install-package autofac -versiunea 3.5.0
PM> install-package autofac.mvc5
PM> install-package autofac.webapi2 (Notă: Dacă folosești webapi2 în proiectul tău, trebuie să fie webapi2 și nu webapi aici, altfel "Rewrite member Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()" va apărea la rulare) A încălcat regulile privind securitatea moștenirii. Accesibilitatea de securitate a metodei suprascrise trebuie să corespundă accesibilității securizate a metodei rescrise. Greșit. )
2. Înregistrează componenta.
3. Creează un container pentru utilizare ulterioară.
var container=builder. Build(); 4. Creează un scop pe viață din Container.
5. Folosiți acest scop de viață pentru a analiza instanțele componentelor.
Configurație. DependencyResolver = new AutofacWebApiDependencyResolver(container); Pentru a înregistra un container API, trebuie să folosești obiectul HttpConfiguration DependencyResolver.SetResolver(noul AutofacDependencyResolver(container)); Înregistrează containerul MVC 6. În metoda Register a clasei WebApiConfig, apelați codul de pas de mai sus și transmiteți obiectul HttpConfiguration.
Avantajul autofac-ului este că poate fi decuplat simultan, fără a fi nevoie de configurare; autofac implementează mai bine conceptul "convenția este mai mare decât configurația" în MVC.
|