是否有可能在重写函数中提供从属类作为形式参数而仍然可以编译?
本文关键字:参数 编译 函数 重写 有可能 是否 | 更新日期: 2023-09-27 17:51:11
提供一种机制的最佳方式是什么?在这种机制中,基类可以有一个带有类参数的函数,而后代类可以用基类参数的后代参数覆盖该函数。困惑,让我构造我想要实现下面:
基类public class BaseReportController
{
private ActionResult InternalRenderReport(BaseReportModel model)
{
ReportExecution execution = this.GetReportExecution(model);
execution.AddRequiredParameter("DatabaseName", aTargetDatabase);
execution.AddRequiredParameter("DatabaseServerName", aTargetServer);
//Send execution into ssrs wrappers to return a report payload
}
public virtual ReportExecution GetReportExecution(BaseReportModel model)
{
return null;
}
}
<<p> 扩展类/strong> public class ExtendedReportController:BaseReportController
{
public override ReportExecution GetReportExecution(ExtendedFromBaseReportModel model)
{
ReportExecution exec = new ReportExecution();
exec.AddOptionalParameter("SomeID1", model.SomeID1);
exec.AddOptionalParameter("SomeID2", model.SomeID2);
return exec;
}
}
是否有类似匿名参数的东西,允许我将ExtendedFromBaseReportModel
定义为覆盖方法中的形式参数,并且仍然可以编译?
使用基类并在方法内部将其强制转换为派生类型。
public class ExtendedReportController:BaseReportController
{
public override ReportExecution GetReportExecution(BaseReportModel model)
{
var castedModel = (ExtendedFromBaseReportModel) model;
ReportExecution exec = new ReportExecution();
exec.AddOptionalParameter("SomeID1", castedModel.SomeID1);
exec.AddOptionalParameter("SomeID2", castedModel.SomeID2);
return exec;
}
}