Viele Bücher erwähnen Konzepte wie Abhängigkeitsinjektion und Steuerungsinversion, die alle darauf abzielen, lose gekoppelte Schichten, Komponenten und Klassenzwecke zu erreichen.
Es ist üblich, die Repository-Klasse zu verwenden, um die direkte Verbindung zwischen Controller und Modell zu trennen. Um die enge Verbindung zwischen der Repository-Klasse und dem Controller zu trennen, wird sie in der Regel nicht direkt von der Repository-Klasse definiert und instanziiert, sondern über die Konstruktionsmethode des Controllers in das angegebene Repository eingeschleust.
Beliebte IoC-Behälter sind: Ninject, Autofac, Unity.
Hier ist eine kurze Erklärung, wie man Autofac-Injektion MVC5 und Webapi2 verwendet.
1. Verwenden Sie nupkg, um Autofac, Autofac.Mvc5 und Autofac.Webapi2 zu referenzieren
PM> Installationspaket autofac -version 3.5.0
PM> install-package autofac.mvc5
PM> install-package autofac.webapi2 (Hinweis: Wenn Sie webapi2 in Ihrem Projekt verwenden, muss es webapi2 sein und nicht webapi, sonst erscheint "Rewrite member autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()" zur Laufzeit "Rewrite member autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope()" Verstoß gegen die Erbsicherheitsregeln. Die Sicherheitszugänglichkeit der überschriebenen Methode muss mit der sicheren Zugänglichkeit der umgeschriebenen Methode übereinstimmen. Falsch. )
2. Registrieren Sie die Komponente.
3. Erstellen Sie einen Container für die spätere Nutzung.
var container=Builder. Build(); 4. Schaffen Sie einen Lebenszeitumfang vom Container aus.
5. Verwenden Sie diesen Lifetime Scope, um Instanzen von Komponenten zu analysieren.
Konfiguration. DependencyResolver = neuer AutofacWebApiDependencyResolver(container); Um einen API-Container zu registrieren, muss man das Objekt HttpConfiguration verwenden DependencyResolver.SetResolver(neuer AutofacDependencyResolver(container)); Registrieren Sie den MVC-Container 6. In der Register-Methode der WebApiConfig-Klasse rufen Sie den obigen Schrittcode auf und geben Sie das HttpConfiguration-Objekt ein.
Der Vorteil von Autofac besteht darin, dass es gleichzeitig entkoppelt werden kann, ohne dass Konfiguration erforderlich ist; autofac setzt das Konzept "Konvention ist größer als Konfiguration" in MVC besser um.
|