Wiele książek wspomina o koncepcjach takich jak wstrzykiwanie zależności i inwersja sterowania, które wszystkie mają na celu osiągnięcie luźno powiązanych warstw, komponentów i celów klasowych.
Powszechne jest używanie klasy Repository do rozdzielenia bezpośredniego połączenia między Kontrolerem a Modelem. Aby odłączyć bliskie połączenie między klasą Repozytorium a Kontrolerem, zwykle nie jest on bezpośrednio definiowany i instancjonowany przez klasę Repozytorium, lecz wtryskiwany do określonego Repozytorium za pomocą metody konstrukcyjnej Kontrolera.
Popularne kontenery IoC to: Ninject, Autofac, Unity.
Oto krótkie wyjaśnienie, jak używać Autofac injection MVC5 i Webapi2.
1. Użyj nupkg, aby odnieść się do Autofac, Autofac.Mvc5 i Autofac.Webapi2
PM> install-package autofac -version 3.5.0
PM> install-package autofac.mvc5
PM> install-package autofac.webapi2 (Uwaga: jeśli używasz webapi2 w swoim projekcie, musi to być webapi2, a nie webapi, w przeciwnym razie pojawi się "Rewrite member Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()" podczas działania) naruszył zasady zabezpieczenia spadku. Dostępność bezpieczeństwa nadpisanej metody musi odpowiadać bezpiecznej dostępności przeprogramowanej metody. Nieprawda. )
2. Zarejestruj komponent.
3. Stworzyć kontener do późniejszego użycia.
var container=builder. build(); 4. Stwórz zakres na całe życie z Kontenera.
5. Użyj tego zakresu życia do analizy instancji komponentów.
konfiguracja. DependencyResolver = nowy AutofacWebApiDependencyResolver(container); Aby zarejestrować kontener API, musisz użyć obiektu HttpConfiguration DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); Zarejestruj kontener MVC 6. W metodzie Register klasy WebApiConfig wywołaj powyższy kod krokowy i przekaż obiekt HttpConfiguration.
Zaletą autofac jest możliwość odłączenia go jednocześnie, bez potrzeby konfiguracji; AutoFAC lepiej realizuje koncepcję "konwencja jest ważniejsza niż konfiguracja" w MVC.
|