gpt4 book ai didi

c# - MVC3 Controller 构造函数 + Ninject

转载 作者:行者123 更新时间:2023-11-30 14:03:21 25 4
gpt4 key购买 nike

我目前正在开发 MVC3 Web 应用程序,遇到了 Ninject 的新问题。

我在我的 Controller 中使用以下代码:

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:没有为此对象定义的无参数构造函数”。当我尝试呈现索引 View 时。

如果我再添加:

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 扩展中的泛型绑定(bind)没有问题。我猜问题不在 Controller 中,而是无法创建存储库,因为它有一些未知的依赖项。

但是这让我稍微更改了依赖项解析器,以便在请求的类型可以解析但其中一个依赖项无法解析时显示 Ninject 堆栈跟踪。在构建服务器上更新到最新版本以获得更好的堆栈跟踪。

关于c# - MVC3 Controller 构造函数 + Ninject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4369086/

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