Comment créer l'injection de dépendance pour ASP.NET MVC 5?
La création de l'Injection de Dépendance avec ASP.NET de Base est assez facile. La documentation explique très bien ici et ce mec a un killer vidéo de l'expliquer.
Cependant, je veux faire la même chose avec mon ASP.NET MVC 5 projet. Comment peut gérer l'injection de dépendance avec l'ASP.MVC 5?
Également, est l'injection de Dépendance limité à seulement les contrôleurs de ou cela peut-il fonctionner avec n'importe quelle classe?
Il y a beaucoup de 3ème DI Conteneurs là, et ils ont tous leur propre documentation sur la façon de brancher-dans leur contenant dans une application MVC. Par exemple Simple Injecteur, Autofac ou Ninject.
Pour moi, je préfère aller avec un exemple de projet qui vous explique en détails, étape par étape, comment utiliser l'injection de dépendance pour ASP.NET MVC5.. je l'ai trouvé dans un grand livre qui s'appelle Pro ASP.NET MVC 5 .. le chapitre 6. livre intéressant, vous devriez le lire!
Pour moi, je préfère aller avec un exemple de projet qui vous explique en détails, étape par étape, comment utiliser l'injection de dépendance pour ASP.NET MVC5.. je l'ai trouvé dans un grand livre qui s'appelle Pro ASP.NET MVC 5 .. le chapitre 6. livre intéressant, vous devriez le lire!
OriginalL'auteur Jaylen | 2017-04-09
Vous devez vous connecter pour publier un commentaire.
Dans ASP.Net MVC, vous pouvez utiliser le .Net de Base DI de NuGet plutôt que d'un tiers des alternatives:-
Pour le MVC Start/classe de Configuration:-
Mon projet utilise l'Identité de l'Utilisateur et j'ai remplacé le OWIN démarrage de la configuration de suivre une approche orientée sur les services à la place. La valeur par défaut de l'Identité de l'Utilisateur classes d'utiliser des méthodes de fabrique de créer des instances. J'ai déplacé ce code dans les constructeurs et invoqué DI de fournir à la appropriée de l'injection. Il est toujours en cours, mais voici où j'en suis:-
Le Compte de la classe Contrôleur a le seul constructeur:-
J'ai juste essayé cela, mais l'installation a échoué en disant qu'elle n'appuie pas le cadre, j'ai été cibler (4.5.1). J'ai été très triste 🙁
Si vous pouvez mettre à niveau vers 4.6.1, je pense que cela vous permettra de l'installer.
Ne devrait pas votre AccountController variables privées des interfaces, et non pas les classes de béton?
Ouais malheureusement c'est ça le problème pour moi, c'est pas un bon moment pour nous de le faire. Finalement, nous avons la volonté, mais j'ai fini par obtenir juste Château.Windsor comme j'ai trouvé des fragments de code qui traite les deux problèmes que j'ai été concerné avec: intégrer le conteneur d'injection de dépendances avec les contrôleurs et aussi avec Solr search.
OriginalL'auteur pixelda
Pour cette réponse, j'ai téléchargé un Microsoft Exemple de WebApi projet comme base pour l'exemple et a ajouté DI services comme suit,
Après la norme MapHttpRoute de configuration, ajoutez le code pour inscrire les services dont vous avez besoin
J'ai ensuite modifié le contrôleur existant pour prendre la DI type (remarque il est juste l'un ctor)
OriginalL'auteur pixelda
Je vous recommande d'utiliser Autofac, il y a d'autres fwk comme unité, ninject, les points de repère autofac a excelent perfomance.
http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison
Ici est l'intégration avec MVC (et travaille avec l'ensemble de la classe)
http://docs.autofac.org/en/latest/integration/mvc.html
OriginalL'auteur Dei Revoledo
La façon la plus simple de implémente l'Injection de Dépendance dans ASP.NET MVC 5 est l'utilisation de l'outil développé par Microsoft lui-même, appelé
Unity
.Vous pouvez trouver de nombreuses ressources sur internet à ce sujet, et vous pouvez commencer par lire la documentation officielle disponible ici: Guide du développeur de l'Injection de Dépendance à l'Aide de l'Unité
Il fonctionne avec n'importe quelle classe, quel que soit le projet, aussi longtemps que vous vous inscrivez sur l'Interface liée à la mise en Œuvre (si vous voulez profiter de la Cio modèle), tout ce que vous avez à faire est d'ajouter l'Interface de l'instanciation de votre constructeur.
Pas de vote, mais l'Unité semble abandonné (?) : blogs.msdn.microsoft.com/dotnet/2015/08/21/the-future-of-unity Un commentaire: "Les nouveaux propriétaires n'ont presque rien pour maintenir le projet en vie. Le dernier commit est presque un an. La dernière version a été publiée en octobre 2015. Apparemment, il y a eu du travail à l'appui .NET de Base, mais il n'a jamais été terminé. Pas une seule demande de pull a jamais été fusionnés. Et les responsables n'ont même pas répondre à des questions et PRs plus. Donc, je pense que c'est officiel: l'Unité est morte..."
Microsoft a une nouvelle DI-cadre pour ASP.NET de Base. S'avère qu'il peut être fourni avec ASP.NET 4 et utilisé dans MVC 5. Ce n'est pas aussi complet que d'autres cadres, mais il doit gérer des cas d'utilisation pour un projet. Sinon, je suis d'accord Unité semble être mort et d'autres cadres où chercher.Voici les instructions pour mettre dans le nouveau cadre avec un MVC5 projet: scottdorman.github.io/2016/03/17/...
OriginalL'auteur Sakuto
Par Défaut De Mon Solveur De Dépendances
OriginalL'auteur pixelda
Dans cette vidéo, un MVP Microsoft démos de l'injection de dépendance dans MVC5 avec AutoFac. Très explication claire sur comment le configurer:
L'Injection de dépendance MVC5 Démo
Code Source est disponible sur GitHub
OriginalL'auteur Edward Pescetto
Je recommande d'utiliser
Windsor
, en installant le package nugetCastle Windsor MVC Bootstrapper
, alors vous pouvez créer un service qui met en œuvreIWindsorInstaller
, quelque chose comme ceci:Puis à l'intérieur de votre contrôleur quelque chose comme ceci:
Et par défaut, la bibliothèque se chargera de l'envoyer au service de votre contrôleur en appelant le
install()
deServiceRegister
au démarrage parce qu'il met en œuvreIWindsorInstaller
OriginalL'auteur Ali Ezzat Odeh