2

有没有办法隐藏基类的成员?

class A
{
  public int MyProperty { get; set; }
}

class B : A
{
  private new int MyProperty { get; set; }
}

class C : B
{
  public C()
  {
    //this should be an error
    this.MyProperty = 5;
  }
}
4

1 回答 1

1

在 C# 语言中没有隐藏成员的方法。您可以获得的最接近的方法是使用EditorBrowsableAttribute.

public class B : A
{
    [EditorBrowsable(EditorBrowsableState.Never)]
    new public int MyProperty {
        get;
        set;
    }
}

我敢说,除了 Visual Studio 之外,不能保证这适用于其他编辑器,所以最好在它上面抛出一个异常。

public class B : A
{
    [EditorBrowsable(EditorBrowsableState.Never)]
    public new int MyProperty {
        get {
            throw new System.NotSupportedException();
        }
        set {
            throw new System.NotSupportedException();
        }
    }
}
于 2012-05-25T02:39:38.820 回答