DependencyResolver.Actuel.La méthode GetService renvoie toujours null
Selon ce tutoriel, à utiliser Ninject dans mon Asp.net MVC 3 application , tout ce que j'ai à faire est d'installer le paquet via Nuget et configurer les dépendances.
Suivez ces étapes
Package D'Installation-Ninject.MVC3
Dans NinjectMVC3.cs
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IReCaptchaValidator>().To<ReCaptchaValidate>();
}
Dans Contrôleur
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Registe(RegisterModel model)
{
var myObject = DependencyResolver.Current.GetService<IReCaptchaValidator>(); //always null
}
myObject
renvoie toujours null.
J'ai essayé kernel.Bind<IReCaptchaValidator>().To<ReCaptchaValidate>().InRequestScope()
, mais pas d'effet!
myObject
continue null
Dans ce post ici sur StackOverflow, on m'a dit d'utiliser DependencyResolver.Current.GetService(TYPE)
pour récupérer l'instance d'un objet.
OriginalL'auteur ridermansb | 2011-10-10
Vous devez vous connecter pour publier un commentaire.
Dans le poste que vous consultez, vous n'étiez pas dit d'utiliser DependencyResolver, juste que c'est possible de l'utiliser. Vous ne devriez pas l'utiliser, car il est bien connu anti-modèle.
Tout en utilisant le DependencyResolver directement doit fonctionner, vous ne devriez vraiment pas faire de cette façon.
Au lieu de cela, vous devez utiliser le Constructeur de l'Injection, ce qui serait d'avoir votre classe, prendre le type de paramètre de votre constructeur.
Puis, dans votre méthode:
Malgré la réponse sélectionnée, je suis obligé de voter, car il n'a pas fait de répondre à la question. Vous admettez que DependencyResolver devrait fonctionner, mais ensuite l'adresse de l'approche plutôt que le problème avec l'OPs actuel de mise en œuvre.
vrai, mais il est également utilisé par des gens qui, comme moi, de tomber sur la même problèmes, mais dans des circonstances différentes (dans mon cas, l'initialisation de l'application). C'est pourquoi les gens devraient s'en tenir à répondre à la question, de ne pas fournir des solutions de rechange. Downvoted.
Votre problème est différent. Son problème, c'était dans une méthode d'action du site appelé Registre, pas dans l'initialisation de l'application... c'est une situation différente. Vous ne pouvez pas downvote les gens parce qu'ils n'ont pas la réponse à une question, VOUS souhaitez répondu dans une autre circonstance.
La question n'était pas à propos de les meilleures pratiques lors de la COI est utilisé dans les sites web MVC. Il était sur le DependencyResolver retourner NULL pour les services. N'hésitez pas à réagir à la question, PUIS vous pouvez ajouter autant de suggestions sur les bonnes pratiques que vous le souhaitez.
OriginalL'auteur Erik Funkenbusch