是否可以通过覆盖.NET中的属性添加访问器?

可以这样做吗?

class A
{
    public virtual string prop
    {
        get
        {
            return "A";
        }
    }
}
class B: A
{
    private string X;
    public override string prop
    {
        get
        {
            return X;
        }
        set
        {
            X = value;
        }
    }
}

也就是说,基类提供仅具有GET访问器的虚拟属性,但子类覆盖GET并且还提供SET.

目前的例子没有编译,但也许我在这里遗漏了一些东西.

补充:澄清,不,我不想重新定义新的.我想添加一个新的访问者.我知道它不在基类中,因此无法覆盖.好的,让我试着解释一下没有语法糖的样子:

class A
{
    public virtual string get_prop()
    {
            return "A";
    }
}
class B: A
{
    private string X;
    public override string get_prop()
    {
        return X;
    }
    public virtual string set_prop()
    {
        X = value;
    }
}

最佳答案 不,这是不可能的.遗憾的是,您甚至无法覆盖和更改访问者级别(例如,从受保护到公共),如
MSDN所述.我建议您稍微考虑重构代码/类,并寻找另一种方法来完成此任务,例如声明使用派生类中的SetProperty方法使用protected修饰符设置访问器.

点赞