C#splitting属性在类之间获取和设置.为什么不起作用?

Fil*_*ącz 0 c# properties

我正在尝试为我的用户提供两个类 - 一个是只读的,一个是可写的.r/o只有getter,而writable将从它继承并添加setter.

我的印象是C#应该能够处理它,但编译器不同意.为什么这不起作用?任何解决方法?

class A
{
    protected int m_val;
    public int Val
    {
        get { return m_val; }
    }
}

class B : A
{
    public int Val
    {
        set { m_val = value; }
    }
}

class Test
{
    static void Main(string[] args)
    {
        B b = new B();
        b.Val++; // <-- WHY DOESN'T THIS WORK?!
    }
}
Run Code Online (Sandbox Code Playgroud)

PS上面示例中的受保护变量是人为的.我的类实际上包装了一些本机资源,并且获取/设置发生在const或可变本机指针上.

Mar*_*ell 13

partial适用于单一类型 - 不是2种类型(A和B).你需要更像下面的东西,理想的是保持领域私密:

class A
{
    private int m_val;
    public int Val
    {
        get { return m_val; }
        protected set { m_val = value; }
    }
}

class B : A
{
    public new int Val
    {
        get { return base.Val;}
        set { base.Val = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)