'删除'基地会员?

时间:2012-05-25 02:25:27

标签: c# inheritance polymorphism shadow member-access

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

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

1 个答案:

答案 0 :(得分: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();
        }
    }
}