我目前正在开发 MVC3 Web 应用程序,并遇到了 Ninject 的新问题。
我在控制器中使用以下代码:
public class TestController : Controller
{
public IRepository<CustomerModel> rep;
public TestController(IRepository<CustomerModel> repository)
{
this.rep = repository;
}
public ActionResult Index()
{
return View();
}
}
还有我的 Ninject 模块:
public class RepositoryModule : NinjectModule
{
public override void Load()
{
Bind(typeof(IRepository<>)).To(typeof(Repository<>));
}
}
然而,这只会抛出“System.MissingMethodException:没有为此对象定义无参数构造函数。”当我尝试渲染索引视图时。
如果我接着添加:
public TestController() : this(new Repository<CustomerModel>(new XenCRMEntities())) { }
所以我的实际 TestController 看起来像:
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();
}
}
它可以工作,但是正如您所看到的,新的构造函数几乎破坏了 IoC 的全部要点。
我该如何解决?
提前致谢。
简短的测试表明,MVC3 扩展中的通用绑定没有问题。我猜问题不在控制器中,而是无法创建存储库,因为它有一些未知的依赖项。
但这让我对依赖解析器进行了一些更改,以便在可以解析请求的类型但其依赖项之一无法解析时显示 Ninject 堆栈跟踪。在构建服务器上更新到最新版本以获得更好的堆栈跟踪。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)