Mnohé knihy spomínajú koncepty ako injekcia závislostí a inverzia riadenia, ktoré sú všetky zamerané na dosiahnutie voľne prepojených vrstiev, komponentov a triednych účelov.
Bežné je použiť triedu Repository na oddelenie priameho spojenia medzi Controllerom a Modelom. Aby sa odpojilo úzke spojenie medzi triedou Repository a Controllerom, zvyčajne nie je priamo definované a inštanciované triedou Repository, ale je vstreknuté do špecifikovaného Repository prostredníctvom metódy konštrukcie Controlleru.
Populárne IoC kontajnery sú: Ninject, Autofac, Unity.
Tu je stručné vysvetlenie, ako používať Autofac injection MVC5 a Webapi2.
1. Použite nupkg na odkazovanie na Autofac, Autofac.Mvc5 a Autofac.Webapi2
PM> install-package autofac -version 3.5.0
PM> install-package autofac.mvc5
PM> install-package autofac.webapi2 (Poznámka: Ak používate webapi2 vo svojom projekte, musí to byť webapi2 a nie webapi, inak sa počas behu zobrazí "Rewrite member Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()") porušil pravidlá dedičnej bezpečnosti. Bezpečnostná dostupnosť prepísanej metódy musí zodpovedať bezpečnej dostupnosti prepísanej metódy. Nesprávne. )
2. Zaregistrujte komponent.
3. Vytvorte kontajner na neskoršie použitie.
var container=builder. build(); 4. Vytvoriť celoživotný rozsah z kontajnera.
5. Použite tento Lifetime Scope na analýzu inštancií komponentov.
konfigurácia. DependencyResolver = nový AutofacWebApiDependencyResolver(container); Na registráciu API kontajnera je potrebné použiť objekt HttpConfiguration DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); Zaregistrujte MVC kontajner 6. V metóde Register triedy WebApiConfig zavolajte vyššie uvedený krokový kód a zadajte objekt HttpConfiguration.
Výhodou autofac je, že ho možno odpojiť naraz bez potreby konfigurácie; autofac lepšie implementuje koncept "konvencia je väčšia ako konfigurácia" v MVC.
|