我正在研究MVC3 Web應用程序,並發現Ninject出現了一個新問題。MVC3控制器構造函數+ 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的整點。
我該如何解決這個問題?
在此先感謝。
什麼控制器工廠實現您使用的是非常糟糕? – 2010-12-06 17:34:35
我只是使用常規的MVC控制器工廠實現。我讀過,你可以讓一個自定義控制器工廠來解決這個問題,但是我只能找到人們使用Structuremap的例子...... – ebb 2010-12-06 17:40:21