Переопределение атрибутов свойств - PullRequest
2 голосов
/ 04 мая 2011

У меня есть базовый класс с полем:

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

У меня есть производный класс:

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

Я использую графический редактор, который показывает все поля для класса. Поскольку Derived устанавливает A в своем конструкторе, я не хочу, чтобы он отображался в редакторе. В редакторе нет полей с атрибутом have [HideInInspector()].
Как сделать так, чтобы у Derived было свойство A с атрибутами [HideInInspector()], а у Base нет? Я не могу использовать ключевое слово new, потому что хочу, чтобы Base все еще использовал то же поле, что и Derived в своих функциях (например, (new Derived()).ShowA() выведет 5).

Редактировать: это выглядит как трюки со свойствами, и new не будет работать, потому что редактор GUI обрабатывает поля с new дважды (один раз для базы и один раз для производной).

1 Ответ

3 голосов
/ 04 мая 2011

Попробуйте это

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}
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...