C#覆盖抽象成员

时间:2011-12-09 09:54:51

标签: c# override

继承我的代码,我尝试覆盖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

我做错了什么?

4 个答案:

答案 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修饰符   修改覆盖方法。

有关overrideabstractMSDN的更多信息,请参阅this article

答案 3 :(得分:0)

您需要删除virtual中的ProcessorTest个关键字。

override表示“覆盖虚函数”,因此无需再次编写它。

相关问题