Вам не нужно иметь пустой конструктор, если вы настраиваете собственный ControllerFactory для использования структуры внедрения зависимостей, такой как Ninject , AutoFac , Castle Windsor и т. д. Большинство из них имеют код для CustomControllerFactory для использования своего контейнера, который вы можете использовать повторно.
Проблема в том, что фабрика контроллеров по умолчанию не знает, как передать зависимость. Если вы не хотите использовать упомянутую выше инфраструктуру, вы можете сделать то, что называется инъекцией зависимости бедняка:
public class HomeController : Controller
{
private IDependency iDependency;
public HomeController() : this(new Dependency())
{
}
public HomeController(IDependency iDependency)
{
this.iDependency = iDependency;
}
}