gpt4 book ai didi

c# - DependencyResolver.Current.GetService 总是返回 null

转载 作者:太空狗 更新时间:2023-10-29 19:41:41 27 4
gpt4 key购买 nike

根据 this tutorial ,要在我的 Asp.net MVC 3 应用程序中使用 Ninject,我所要做的就是通过 Nuget 安装包并配置依赖项。

按照这些步骤操作

Install Package-Ninject.MVC3

NinjectMVC3.cs

private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IReCaptchaValidator>().To<ReCaptchaValidate>();
}

Controller

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Registe(RegisterModel model)
{
var myObject = DependencyResolver.Current.GetService<IReCaptchaValidator>(); //always null
}

myObject总是返回 null。

我试过了 kernel.Bind<IReCaptchaValidator>().To<ReCaptchaValidate>().InRequestScope() , 但没有效果!

myObject 继续空

this post在 StackOverflow 上,有人告诉我使用 DependencyResolver.Current.GetService(TYPE)检索对象的实例。

最佳答案

在您提到的帖子中,没有告诉您使用 DependencyResolver,只是告诉您可以使用它。您不应该使用它,因为它是众所周知的反模式。

虽然直接使用 DependencyResolver 应该可行,但您真的不应该那样做。

相反,您应该使用构造函数注入(inject),这将使您的类将类型作为构造函数的参数。

public class MyController : Controller {
IReCaptchaValidator _validator;

public MyController(IReCaptchaValidator validator)
{
_validator = validator;
}
}

然后,在你的方法中:

[HttpPost]  
[ValidateAntiForgeryToken]
public ActionResult Registe(RegisterModel model)
{
var myObject = _validator;
}

关于c# - DependencyResolver.Current.GetService 总是返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7719953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com