C# 无法继承没有默认构造函数的基控制器类
我有一个由其他控制器继承的BaseController 基本控制器: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
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”参数,无法在基控制器中访问!