Я сейчас работаю над веб-приложением MVC3 и исправил новую проблему с 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: Нет без параметров конструктора, определенные для этого объект «. когда я пытаюсь отобразить представление Index.
Если я после этого добавить:
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.
Как исправить это?
Заранее спасибо.
, что контроллер завода вы используете ? –
Я просто использую обычную реализацию фабрики контроллеров MVC. Я прочитал, что вы можете создать фабрику пользовательских контроллеров, чтобы исправить это, однако мне удалось найти примеры, когда люди используют Structuremap ... – ebb
см. Http: //www.planetgeek.ch/2010/11/13/official-ninject-mvc-extension-получает-support-for-mvc3/ –