J'ai une application MVC3 que j'aimerais transférer sur MVC4. J'utilise Ninject pour l'injection de dépendance. En utilisant Nuget, j'ai ajouté « Ninject » à mon projet et créé une usine de contrôleur comme indiqué ci-dessousNinject et asp.net MVC4
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 bien pour MVC3, mais les choses ont changé dans MVC4. Je l'ai fait quelques recherches et a trouvé ce lien qui explique comment obtenir ninject travailler pour MVC4
http://haacked.com/archive/2012/03/11/itrsquos-the-little-things-about-asp-net-mvc-4.aspx
Cependant, je ne parviens pas à obtenir le code dans le lien ci-dessus pour compiler. Plus précisément, le code que je suis censé placer dans la méthode Start() du fichier web.common me donne des erreurs d'espace de noms non résolus
GlobalConfiguration.Configuration.ServiceResolver
.SetResolver(DependencyResolver.Current.ToServiceResolver());
deux « ServiceResolver » et « .SetResolver » ne sont pas résolus. Quelles références dois-je ajouter pour les activer? Aussi, si possible pouvez-vous me diriger vers un tutoriel me montrant comment faire fonctionner ninject dans MVC4 sans avoir à installer le paquet nuget ninject.mvc3? Je demande parce que je préférerais ne pas avoir des paquets installés dans mon application qui ont été écrits pour MVC3 spécifiquement pour éviter des choses de dégrader la ligne si ces paquets de nuget sont mis à jour.
modifier: Je aurais dû ajouter que je suis en utilisant Visual Studio 2012 et l'article .Net 4.5
Je ne WebAPI besoin. Où dois-je ajouter mes liaisons dans NinjectWebCommon.cs? Dans la méthode "start"? En outre, voyez-vous un potentiel pour les mises à jour du paquet ninject.mvc3 brisant mon application? Merci –
@curiouspanda - Les mises à jour peuvent toujours casser des choses, et Ninject a traversé quelques itérations qui ont changé la façon "préférée" de travailler avec, mais en général le code devrait rester compatible. Si vous n'utilisez pas WebAPI, l'article de Phil ne s'applique pas. Vous enregistrez vos mappages dans la méthode RegisterServices de NinjectWebCommon.cs –