T4MVC不传递参数到基本控制器,因此生成的代码不构建
本文关键字:此生 代码 构建 参数 T4MVC 控制器 | 更新日期: 2023-09-27 17:53:33
问题:
当我编译时,我得到以下错误:" .Controllers。ControllerBase'不包含构造函数接受0个参数"
我的基本控制器是这样的:
public abstract class ControllerBase : Controller
{
public CompanyChannel<IAuthorizationService> authorizationServiceClient;
public ControllerBase(CompanyChannel<IAuthorizationService> authService)
{
this.authorizationServiceClient = authService;
}
}
一个使用Base..的控制器示例
public partial class SearchController : ControllerBase
{
protected CompanyChannel<IComplaintTaskService> complaintTaskServiceChannel;
protected IComplaintTaskService taskServiceClient;
protected ComplaintSearchViewModel searchViewModel;
#region " Constructor "
public SearchController(CompanyChannel<IComplaintTaskService> taskService, CompanyChannel<IAuthorizationService> authService, ComplaintSearchViewModel viewModel)
: base(authService)
{
searchViewModel = viewModel;
this.complaintTaskServiceChannel = taskService;
this.taskServiceClient = complaintTaskServiceChannel.Channel;
}
#endregion
public virtual ActionResult Index()
{
return View();
}
}
这似乎是绊倒T4MVC。
我应该不把参数传递给基构造函数吗?
抽象类必须有一个默认构造函数。当你在子类中有任何没有调用基类的构造函数时,编译器会自动调用基类的默认构造函数,因此你必须在基类中有一个。
下面的演示将有助于理解c#
中的元素链class Base
{
public Base()
{
Console.WriteLine("Base() called");
}
public Base(int x)
{
Console.WriteLine("Base(int x) called");
}
}
class Sub : Base
{
public Sub()
{
Console.WriteLine("Sub() called");
}
}
并在Main()中创建
new Sub();
并观察控制台输出