Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法继承没有默认构造函数的基控制器类_C#_Asp.net Mvc_Constructor_Controller_T4mvc - Fatal编程技术网

C# 无法继承没有默认构造函数的基控制器类

C# 无法继承没有默认构造函数的基控制器类,c#,asp.net-mvc,constructor,controller,t4mvc,C#,Asp.net Mvc,Constructor,Controller,T4mvc,我有一个由其他控制器继承的BaseController 基本控制器: public partial class BaseController : Controller { private readonly IUnitOfWork _uow; private readonly INewsService _newsService; protected BaseController(IUnitOfWork uow, INewsService newsS

我有一个由其他控制器继承的BaseController

基本控制器:

public partial class BaseController : Controller
{
        private readonly IUnitOfWork _uow;
        private readonly INewsService _newsService;

        protected BaseController(IUnitOfWork uow, INewsService newsService)
        {
            _uow = uow;
            _newsService = newsService;
        }

//...

}
其中一个控制器:

public partial class HomeController : BaseController
{

    private readonly IUserService _userService;
    private readonly IMemberService _memberService;
    private readonly IUnitOfWork _uow;
    public HomeController(IUnitOfWork uow, IUserService userService, IMemberService memberService, INewsService newsService): base(uow, newsService)
    {
        _userService = userService;
        _memberService = memberService;
        _uow = uow;
    }

//...
}
但对于t4mvc生成的类中的每个控制器,我都会遇到这个错误,例如:

'MvcApp.Controllers.BaseController' does not contain a constructor that takes 0 arguments.
在HomeController.generated.cs文件中

解决方案


听起来好像IOC容器(如果存在)没有覆盖默认控制器工厂。如果使用Ninject,则应安装Ninject.MVC3项目。每个容器都需要覆盖默认的控制器工厂,以便它可以构建它们并注入依赖项


对于StructureMap,您需要或

听起来像是您的IOC容器(如果它存在的话)没有覆盖默认的控制器工厂。如果使用Ninject,则应安装Ninject.MVC3项目。每个容器都需要覆盖默认的控制器工厂,以便它可以构建它们并注入依赖项


对于StructureMap,您需要或

一个具有这种依赖关系的控制器。这是我最近学的专业术语^_^

首先,我在操作过滤器中有UoW,并在我的案例中使用属性来标记操作事务,我将其与审计相结合。其余的,如果它们真的那么复杂,可能应该有一个应用程序服务来包装它们


只是一个想法。我是一个真正的初学者。

有这种依赖关系的控制器。这是我最近学的专业术语^_^

首先,我在操作过滤器中有UoW,并在我的案例中使用属性来标记操作事务,我将其与审计相结合。其余的,如果它们真的那么复杂,可能应该有一个应用程序服务来包装它们

只是一个想法。我是一个真正的初学者。

这类似于

您可以将基本控制器更改为抽象控制器吗?如果是这样的话,我相信这会使事情顺利进行。

这类似于


您可以将基本控制器更改为抽象控制器吗?如果是这样,我相信这会使事情顺利进行。

除了David Ebbo解决方案之外,这是

另一个解决方案:

我刚刚向我的基本控制器添加了一个默认构造函数,如:

protected BaseController(){}

现在,如果不使用CodeRush,它也可以正常工作。子类中的“未实现基类型构造函数”问题。

除了David Ebbo解决方案之外,这是

另一个解决方案:

我刚刚向我的基本控制器添加了一个默认构造函数,如:

protected BaseController(){}

现在,如果不使用CodeRush,它也可以正常工作。子类中存在“未实现基类型构造函数”问题。

我使用StructureMap,并覆盖了默认的控制器工厂。我是在编译时而不是在运行时发现这个错误的,我打赌你也是在运行时发现的;您是否安装了SM MVC软件包?当我构建解决方案时,我会遇到这个错误,或者当我在t4mvc中“运行自定义工具”时;我使用StructureMap并覆盖了默认的控制器工厂。我是在编译时而不是在运行时发现这个错误的,我打赌你也是在运行时发现的;您是否安装了SM MVC软件包?当我构建解决方案时,我会遇到这个错误,或者当我在t4mvc中“运行自定义工具”时;您好David Ebbo,+1票,我测试了您的解决方案并为我工作,但CodeRush在子类中遇到了一个问题,即“未实现基类型构造函数”。请查看我的解决方案。David Ebbo,在您的解决方案中,还有一些方法过载,这些方法有一个额外的“ActionResult”参数,无法在基控制器中访问!您好David Ebbo,+1票,我测试了您的解决方案并为我工作,但CodeRush在子类中遇到了一个问题,即“未实现基类型构造函数”。请查看我的解决方案。David Ebbo,在您的解决方案中,还有一些方法过载,这些方法有一个额外的“ActionResult”参数,无法在基控制器中访问!