覆盖属性属性

时间:2011-05-04 08:21:20

标签: c# inheritance attributes

我有一个带有字段的基类:

class Base
{
    public int A;
    public int ShowA()
    {
        Console.WriteLine(A);
    }
}

我有一个派生类:

class Derived : Base
{
    public Derived()
    {
        A = 5;
    }
}

我使用GUI编辑器显示类的所有字段。因为Derived在其构造函数中设置A,所以我不希望它在编辑器中显示。编辑器不会将[HideInInspector()]属性设为字段 如何DerivedA属性设为[HideInInspector()]属性Base? 我无法使用关键字new,因为我希望Base仍然在其函数中使用与Derived相同的字段(例如(new Derived()).ShowA()将打印5

编辑:它看起来具有属性的技巧,而new将无效,因为GUI编辑器将字段处理new两次(一次用于基础,一次用于派生)。

1 个答案:

答案 0 :(得分:3)

试试这个

class Base
{
    public virtual int A {get; set;}
    public int ShowA()
    {
        Console.WriteLine(A);
    }
}

class Derived : Base
{
    public Derived()
    {
        A = 5;
    }

    [HideInInspector()]
    public override int A
    {
        get { return base.A;}
        set { base.A = value}
    }
}