Daudzās grāmatās minēti tādi jēdzieni kā atkarības injekcija un kontroles inversija, kuru mērķis ir sasniegt brīvi savienotus slāņus, komponentus un klases mērķus.
Parasti tiek izmantota repozitoriju klase, lai atdalītu tiešo savienojumu starp kontrolieri un modeli. Lai atvienotu ciešo savienojumu starp repozitoriju klasi un kontrolieri, to parasti tieši nedefinē un instancē repozitoriju klase, bet ievada norādītajā repozitorijā, izmantojot kontroliera būvniecības metodi.
Populāri IoC konteineri ir: Ninject, Autofac, Unity.
Šeit ir īss paskaidrojums par to, kā lietot Autofac injekciju MVC5 un Webapi2.
1. Izmantojiet nupkg, lai atsauktos uz Autofac, Autofac.Mvc5 un Autofac.Webapi2
PM> instalēšanas pakotne autofac versija 3.5.0
PM> install-package autofac.mvc5
PM> install-package autofac.webapi2 (Piezīme: ja projektā izmantojat webapi2, tam jābūt webapi2, nevis webapi šeit, pretējā gadījumā izpildlaikā parādīsies "Pārrakstīt dalībnieku Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()") pārkāpis mantojuma drošības noteikumus. Ignorētās metodes drošības pieejamībai jāatbilst pārrakstītās metodes drošajai pieejamībai. Nepareizi. )
2. Reģistrējiet komponentu.
3. Izveidojiet konteineru vēlākai lietošanai.
var container=veidotājs. Būvēt (); 4. Izveidojiet mūža tvērumu no konteinera.
5. Izmantojiet šo kalpošanas laika tvērumu, lai parsētu komponentu gadījumus.
Konfigurācija. DependencyResolver = jauns AutofacWebApiDependencyResolver(konteiners); Lai reģistrētu API konteineru, jāizmanto objekts HttpConfiguration DependencyResolver.SetResolver(jauns AutofacDependencyResolver(konteiners)); MVC konteinera reģistrēšana 6. WebApiConfig klases reģistra metodē izsauciet iepriekš minēto soļa kodu un nododiet objektu HttpConfiguration.
Autofac priekšrocība ir tā, ka to var atsaistīt vienā reizē bez konfigurācijas; autofac labāk īsteno MVC jēdzienu "konvencija ir lielāka par konfigurāciju".
|