Mnoho knih zmiňuje koncepty jako dependency injection a control inversion, které jsou všechny zaměřeny na dosažení volně propojených vrstev, komponent a třídních účelů.
Běžné je používat třídu Repository k oddělení přímého spojení mezi řadičem a modelem. Aby bylo možné odpojit úzké spojení mezi třídou Repository a Controllerem, obvykle není přímo definován a instancován třídou Repository, ale je vkládán do specifikovaného Repository pomocí metody konstrukce Controlleru.
Oblíbené IoC kontejnery jsou: Ninject, Autofac, Unity.
Zde je stručné vysvětlení, jak používat Autofac injection MVC5 a Webapi2.
1. Použijte nupkg pro odkazy 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: Pokud používáte webapi2 ve svém projektu, musí to být webapi2 a ne webapi, jinak se během běhu objeví "Rewrite member Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()") porušil pravidla zajištění dědictví. Bezpečnostní přístupnost přepsané metody musí odpovídat bezpečné dostupnosti přepsané metody. Špatně. )
2. Zaregistrujte komponentu.
3. Vytvořit kontejner pro pozdější použití.
var container=builder. build(); 4. Vytvořit celoživotní rozsah z kontejneru.
5. Použijte tento Lifetime Scope k analýze instancí komponent.
konfigurace. DependencyResolver = new AutofacWebApiDependencyResolver(container); Pro registraci API kontejneru je potřeba použít objekt HttpConfiguration DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); Zaregistrujte kontejner MVC 6. V metodě Register třídy WebApiConfig zavolejte výše uvedený krokový kód a předejte objekt HttpConfiguration.
Výhodou autofac je, že jej lze oddělit najednou bez nutnosti konfigurace; AutoFAC lépe realizuje koncept "konvence je větší než konfigurace" v MVC.
|