Доступ к скрытому свойству из дочернего класса - PullRequest
0 голосов
/ 16 января 2019

Иногда в C # полезно скрывать свойства унаследованного базового класса, например, когда вы хотите изменить тип. Однако, как только я спрятал унаследованное свойство, я не знаю, как прочитать или записать значение скрытого свойства.

Вот небольшой пример использования животных и собак:

public enum DogBreed {
    Corgi, Pug
}
public class Animal {
    public string Breed { get; set; }
}
public class Dog : Animal {
    public new DogBreed? Breed {
        get {
            // Not working since "Breed" now refers to Dog.Breed not Animal.Breed
            if (Breed == "Corgi") return DogBreed.Corgi;
            if (Breed == "Pug") return DogBreed.Pug;
            return null;
        }
        set {
            // Also Not working for same reason as above
            if (value == DogBreed.Corgi) Breed = "Corgi";
            else if (value == DogBreed.Pug) Breed = "Pug";
            else Breed = null;
        }
    }
}

Как получить доступ к скрытому свойству? (Animal.Breed)

1 Ответ

0 голосов
/ 16 января 2019

Вы ищете ключевое слово base:

public class Dog : Animal {
    public new DogBreed? Breed {
        get {
            // base.Breed refers to the hidden property
            if (base.Breed == "Corgi") return DogBreed.Corgi;
            if (base.Breed == "Pug") return DogBreed.Pug;
            return null;
        }
        set {
            if (value == DogBreed.Corgi) base.Breed = "Corgi";
            else if (value == DogBreed.Pug) base.Breed = "Pug";
            else base.Breed = null;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...