c# - 仅覆盖获取访问器

标签 c#

我有一个抽象类:

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

我想推导一下,顺便加个set访问器

 class ClassDerive : ClassBase
    {
        string _s;

        public override string Test
        {
            get { return _s; }
            set { _s = value; }
        }
    }

我不能那样做,因为我可能无法覆盖设置

 class ClassDerive2 : ClassBase
    {
        string _s;

        public string Test
        {
            override get { return _s; }
            set { _s = value; }
        }
    }

语法错误

class ClassDerive3 : ClassBase
{
    string _s;

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

    public string Test
    {
        set { _s = value; }
    }
}

语法错误

有什么想法吗???

谢谢

最佳答案

您不能完全做您想做的事,但这里有一个解决方法:

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;
    }
}

这将使 Test 只能通过公共(public) SetTest 方法在 ClassDerived 中设置。我知道这不像使用属性的 setter 那样干净,但它已经差不多了。

关于c# - 仅覆盖获取访问器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1043878/

相关文章:

C# 程序集,程序集中有什么?

c# - WPF - 如何将控件的位置绑定(bind)到当前鼠标位置?

c# - Activator.CreateInstance 在转换到同一个程序集中的接口(interface)时出错

c# - 有没有办法使用 linq 遍历对象列表的属性?

c# - 如何使用 LINQ 和 C# 从 3 个不同的文件中查找最早的日期?

c# - 在 Silverlight 中列出附加属性

c# - 出于什么原因我应该使用 Expression Blend 而不是 XAML 设计器?

c# - 如何在 Entity Framework 6.1 中只加载子对象的某些字段?

c# - 如何返回通用列表?

c# - 亚像素精度的图像处理