De nombreux livres mentionnent des concepts tels que l’injection de dépendances et l’inversion de contrôle, tous visant à atteindre des couches, composants et objectifs de classe faiblement couplés.
Il est courant d’utiliser la classe Repository pour séparer la connexion directe entre le Contrôleur et le Modèle. Afin de déconnecter la connexion étroite entre la classe Repository et le Controller, il n’est généralement pas directement défini ni instanciat par la classe Repository, mais injecté dans le Repository spécifié via la méthode de construction du Controller.
Les conteneurs IoC populaires sont : Ninject, Autofac, Unity.
Voici une brève explication de la façon d’utiliser l’injection Autofac, MVC5 et Webapi2.
1. Utiliser nupkg pour référencer Autofac, Autofac.Mvc5 et Autofac.Webapi2
PM> install-package autofac -version 3.5.0
PM> install-package autofac.mvc5
PM> install-package autofac.webapi2 (Note : si vous utilisez webapi2 dans votre projet, il doit s’agir ici de webapi2 et non de webapi, sinon « Rewrite member Autofac.Integration.WebApi.AutofacWebApiDependencyResolver.BeginScope() » apparaîtra à l’exécution) a violé les règles de sécurité de l’héritage. L’accessibilité sécuritaire de la méthode écrasée doit correspondre à l’accessibilité sécurisée de la méthode réécrite. Erreur. )
2. Enregistrer le composant.
3. Créer un conteneur pour une utilisation ultérieure.
var conteneur=constructeur. Build() ; 4. Créer une longe-vue à vie à partir du conteneur.
5. Utiliser cette portée de vie pour analyser les instances des composants.
config. DependencyResolver = new AutofacWebApiDependencyResolver(container) ; Pour enregistrer un conteneur API, vous devez utiliser l’objet HttpConfiguration DependencyResolver.SetResolver(nouveau AutofacDependencyResolver(conteneur)) ; Enregistrer le conteneur MVC 6. Dans la méthode Register de la classe WebApiConfig, appelez le code étape ci-dessus et passez l’objet HttpConfiguration.
L’avantage de l’autofac est qu’il peut être découplé en une seule fois sans besoin de configuration ; autofac implémente mieux le concept de « la convention est supérieure à la configuration » dans MVC.
|