【发布时间】:2014-11-10 21:57:30
【问题描述】:
我的项目结构如下:
// Abstract class
public abstract class Job
{
public abstract JobResult Run();
}
public abstract class JobResult { }
// Concrete implementer
public class Job1 : Job
{
public override Job1Result Run() { }
}
public class Job1Result : JobResult { }
每个具体的作业都继承自 Job 并实现方法 Run 返回一个具体的 JobResult 类。
但是,当我这样做时,我得到了编译器错误:
Job1.Run()':返回类型必须是 JobResult 才能匹配被覆盖的成员 Job.Run()
重写抽象方法时,真的不能返回返回类型的继承对象吗?
【问题讨论】:
-
试试改成
public override Job1Result Run()? -
@McAdam331 对不起,我在我的项目中有这个,但忘记在我的问题中包含它。我已经更新它以包含它。但仍然出现错误。
-
这称为返回类型协方差。不支持。覆盖必须匹配签名、通用约束、和返回类型。
标签: c# inheritance