仅覆盖Get访问者

Pit*_*ing 3 c#

我有一个抽象类:

abstract class ClassBase
    {
        public abstract string Test { get; }
    }
Run Code Online (Sandbox Code Playgroud)

我想得到它,顺便添加一个set accesor

 class ClassDerive : ClassBase
    {
        string _s;

        public override string Test
        {
            get { return _s; }
            set { _s = value; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我不能这样做因为我可能不会覆盖set

 class ClassDerive2 : ClassBase
    {
        string _s;

        public string Test
        {
            override get { return _s; }
            set { _s = value; }
        }
    }
Run Code Online (Sandbox Code Playgroud)

语法错误

class ClassDerive3 : ClassBase
{
    string _s;

    public override string ClassBase.Test
    {
        get { return _s; }
    }

    public string Test
    {
        set { _s = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

语法错误

任何的想法 ???

谢谢

And*_*are 6

你不能这样做正是你想做的事,但这里是一个解决办法:

abstract class ClassBase
{
    public abstract String Test { get; }
}

class ClassDerive : ClassBase
{
    string _s;

    public override string Test
    {
        get { return _s; }
    }

    public void SetTest(String test)
    {
        this._s = test;
    }
}
Run Code Online (Sandbox Code Playgroud)

Test只能ClassDerived通过公共SetTest方法设置.我知道这不像使用属性的setter那么干净,但是它的性能和它一样好.


Mar*_*ann 4

如果首先在类型中定义了只读属性,则以后无法将其更改为派生类中的读/写属性。这就是 .NET 的工作原理,并且无法更改。

另一方面,如果您定义具有只读属性的接口,则稍后可以在具有可写属性的类中实现该接口。

如果您想分享您想要实现的目标,也许我们可以提出一个可行且可以编译的设计:)