Ninject et asp.net MVC4
J'ai un MVC3 application que je voudrais, du port, MVC4. Je suis à l'aide de Ninject pour l'injection de dépendances. À l'aide de Nuget, j'ai ajouté "Ninject" à mon projet et créé un contrôleur d'usine comme indiqué ci-dessous
public class NinjectControllerFactory : DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory()
{
ninjectKernel = new StandardKernel();
AddBindings();
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null ? null : (IController)ninjectKernel.Get(controllerType);
}
private void AddBindings()
{
//Add ninject bindings here
}
}
Cela fonctionne très bien pour MVC3, mais les choses ont changé dans MVC4. J'ai fait quelques recherches et j'ai trouvé ce lien qui explique comment obtenir ninject de travail pour MVC4
http://haacked.com/archive/2012/03/11/itrsquos-the-little-things-about-asp-net-mvc-4.aspx
Cependant, j'ai de la difficulté à obtenir le code dans le lien ci-dessus pour compiler. Plus précisément, Le code que je suis censé le mettre dans la méthode Start() de la web.fichier commun me donne non résolus de l'espace de noms des erreurs
GlobalConfiguration.Configuration.ServiceResolver
.SetResolver(DependencyResolver.Current.ToServiceResolver());
À la fois "ServiceResolver" et ".SetResolver" ne sont pas résolues. Quelles sont les références dois-je ajouter pour permettre à ceux-ci? Également, si possible pouvez-vous me diriger vers un tutoriel qui montre moi comment obtenir ninject de travail dans MVC4, sans avoir à installer le package nuget ninject.mvc3? Je demande parce que je préfère ne pas avoir tous les paquets installés dans mon application qui ont été écrits pour MVC3 spécifiquement à éviter les choses de la dégradation de la ligne si ces nuget packages sont mis à jour.
edit: j'aurais dû ajouter que je suis à l'aide de Visual studio 2012 et .Net 4.5
OriginalL'auteur | 2012-09-13
Vous devez vous connecter pour publier un commentaire.
Phil article sur l'utilisation de Ninject avec WebAPI. C'est ce que tu veux dire? Vous n'avez pas besoin de le faire pour normal MVC injection. Aussi, vous devriez être en utilisant la Ninject.MVC3 package NuGet avec MVC4 (oui, je sais il est dit MVC3, mais il fonctionne toujours très bien parce que NuGet définit la Version de l'Assembly qui Redirige faire tout Juste Travail), ce jeux le tout et vous n'avez pas besoin d'un contrôleur de l'usine. Il suffit d'éditer le
NinjectWebCommon.cs
fichier à ajouter vos fixations.Les mises à jour peuvent toujours casser des choses, et Ninject a connu quelques itérations qui ont changé le "préféré" de la façon de travailler avec elle, mais en général, le code doit rester compatible. Si vous n'utilisez pas WebAPI puis Phil article ne s'applique pas. Vous enregistrez votre mappages dans le RegisterServices méthode de NinjectWebCommon.cs
OriginalL'auteur Erik Funkenbusch
Simplement d'Ajouter de l'espace de noms
après l'installation du modèle à partir de Nuget...
U suffit d'installer "Ninject", mais pas "Ninject pour MVC3" de Nuget Modèle
OriginalL'auteur Ravichandra