继承我的代码,我尝试覆盖SettingsFileName成员:
public class ProcessorTest: Processor
{
public virtual override string SettingsFileName
{
get { return @"C:\Settings.xml"; }
}
}
以下是成员所在的班级:
public abstract class Processor
{
/// <summary>
/// Implement this property to enable initializing singleton from the correct file path
/// </summary>
public abstract string SettingsFileName { get; }
}
但这给了我一个错误:
A member 'ProcessorTest.SettingsFileName' marked as override cannot be marked as new or virtual
我做错了什么?
答案 0 :(得分:12)
只需在继承的类中使用override
,而不是virtual override
。
virtual
将成员标记为可覆盖,因此它在基类中使用。 override
标记成员覆盖可覆盖的某个人。 abstract
隐含virtual
。
答案 1 :(得分:4)
删除虚拟
public class ProcessorTest: Processor
{
public override string SettingsFileName
{
get { return @"C:\Settings.xml"; }
}
}
关键字不能一起使用
答案 2 :(得分:0)
由于覆盖一个抽象属性,SettingsFileName
不能是虚拟的。
您不能使用new,static,virtual或abstract修饰符 修改覆盖方法。
有关override
上abstract
和MSDN的更多信息,请参阅this article。
答案 3 :(得分:0)
您需要删除virtual
中的ProcessorTest
个关键字。
override
表示“覆盖虚函数”,因此无需再次编写它。