MVC3 Contrôleur constructeur + Ninject
Je suis en ce moment de travailler sur un MVC3 application Web et ecountered un nouveau problème avec Ninject.
Je suis en utilisant le code suivant dans mon controller:
public class TestController : Controller
{
public IRepository<CustomerModel> rep;
public TestController(IRepository<CustomerModel> repository)
{
this.rep = repository;
}
public ActionResult Index()
{
return View();
}
}
Et mon Ninject Module:
public class RepositoryModule : NinjectModule
{
public override void Load()
{
Bind(typeof(IRepository<>)).To(typeof(Repository<>));
}
}
Cependant ce juste me lance "du Système.MissingMethodException: Pas de constructeur sans paramètre défini pour cet objet." quand j'ai essayer de rendre la vue Index.
Si je puis ajouter:
public TestController() : this(new Repository<CustomerModel>(new XenCRMEntities())) { }
donc ma fait TestController ressemble:
public class TestController : Controller
{
public IRepository<CustomerModel> rep;
public TestController() : this(new Repository<CustomerModel>(new XenCRMEntities())) { }
public TestController(IRepository<CustomerModel> repository)
{
this.rep = repository;
}
public ActionResult Index()
{
return View();
}
}
Il fonctionne, mais comme vous pouvez le voir le nouveau constructeur assez bien rompre le point de l'ensemble de la Coi.
Comment puis-je résoudre ce problème?
Merci d'avance.
ce contrôleur de l'usine de mise en œuvre utilisez-vous?
Je suis juste à l'aide de l'ordinaire MVC contrôleur de l'usine de mise en œuvre. J'ai lu que vous pourriez faire un personnalisé du contrôleur de l'usine pour corriger ce problème, cependant j'ai seulement été en mesure de trouver des exemples où les gens utilisent Structuremap...
voir planetgeek.ch/2010/11/13/...
Je suis juste à l'aide de l'ordinaire MVC contrôleur de l'usine de mise en œuvre. J'ai lu que vous pourriez faire un personnalisé du contrôleur de l'usine pour corriger ce problème, cependant j'ai seulement été en mesure de trouver des exemples où les gens utilisent Structuremap...
voir planetgeek.ch/2010/11/13/...
OriginalL'auteur ebb | 2010-12-06
Vous devez vous connecter pour publier un commentaire.
Un petit test a montré qu'il n'y a pas de problème avec les génériques des liaisons dans l'MVC3 extension. Je suppose que le problème n'est pas dans le Contrôleur, mais que le Dépôt ne peut pas être créé parce qu'il a un inconnu dépendances.
Mais ça m'a amené à modifier la résolution de dépendances un peu pour montrer le Ninject stacktrace chaque fois que le type demandé peut être résolue, mais l'une de ses dépendances ne parvient pas à être résolu. Mise à jour vers la dernière version sur le serveur de build pour obtenir une meilleure trace de la pile.
OriginalL'auteur Remo Gloor
Vous aurez besoin de changer le contrôleur de l'usine, que l'ordinaire de MVC contrôleur de l'usine ne fait pas de DI.
Vous pouvez regarder ici pour plus d'informations sur la configuration de la MVC + Ninject: MVC3 + Ninject - Comment?
Désolé, peut-être que je n'étais pas trop clair. Si vous ne voulez pas ajouter un constructeur sans paramètre, vous devriez changer votre contrôleur de l'usine de celle qui ne l'Injection de Dépendance à l'aide Ninject. L'ajout de l'un est assez facile, comme il y en a un fourni par le Ninject de l'équipe. Vous pouvez obtenir le téléchargement et les instructions ici
Hmm... ne peux pas trouver n'importe quel contrôleur de l'usine au lien que vous avez fourni o:o (au moins pas pour MVC3)
C'est tous manipulés par le NinjectHttpApplication classe. Télécharger le package de votre ASP.NET version (3.5 ou 4), en cliquant sur Télécharger->Télécharger les Paquets. Ajouter la DLL en tant que référence pour votre projet MVC. Suivre le instructions pour activer Ninject. Espérons que cela aide!
OriginalL'auteur CGK
Il s'avère que ce n'est pas le Contrôleur c'est tout gâcher, mais que Ninject ne pas Lier mon générique Référentiel et IRepository correctement - j'ai donc créé un nouveau poste: Ninject + Lier générique référentiel
OriginalL'auteur ebb
De ne pas utiliser cette liaison!!!
J'ai changé mon code de cette liaison et le serveur a crashé, il travaille pour un seul utilisateur, mais pour des milliers de demandes, il est vraiment mauvais
Utilisation
OriginalL'auteur qBufff