Ano*_*use 5 asp.net-mvc dependency-injection ninject
嗨,我正在使用ninject与MVC应用程序.
我确信我已正确设置,因为我能够让它适用于我的控制器.以下是控制器的示例,它正常工作:
public class GstRateController : Controller
{
private readonly IUnitOfWork _unitOfWork;
public GstRateController(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
...
Run Code Online (Sandbox Code Playgroud)
然后我认为它在viewModel上也会很好所以我尝试了:
public class SettingController : Controller
{
private readonly IUnitOfWork _unitOfWork;
public SettingController(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
Run Code Online (Sandbox Code Playgroud)
然后我通过以下方式在控制器中实例化视图模型:
public ActionResult Index()
{
return View("Index", Activator.CreateInstance<SettingViewModel>());
}
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:
没有为此对象定义的无参数构造函数.
我是DI的新手.有人可以告诉我如何为viewmodels实现这个目标吗?
它适用于控制器而不是视图模型的原因是,当您安装 NInject NuGet 时,它会注册一个自定义依赖项解析器,并且 ASP.NET MVC 框架使用控制器工厂或依赖项解析器来实例化控制器。您可以在本文中阅读有关依赖项解析器的更多信息。
另一方面,视图模型是为满足给定视图的要求而专门设计的类。由于您手动实例化它们,DI 框架永远无法拦截并向它们注入任何依赖项。他们不应该有依赖性。它们应该是从域模型映射的简单 POCO 对象。它们代表一个或多个域模型的项目。