C# 从子类访问隐藏属性

C# 从子类访问隐藏属性,c#,oop,inheritance,C#,Oop,Inheritance,有时在C#中,隐藏继承基类的属性很有用,例如当您想要更改类型时。但是,一旦我隐藏了继承的属性,我就不知道如何读取或写入隐藏属性的值 下面是一个使用动物和狗的小例子: public enum DogBreed { Corgi, Pug } public class Animal { public string Breed { get; set; } } public class Dog : Animal { public new DogBreed? Breed {

有时在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;
        }
    }
}

如何访问隐藏的属性?(动物。品种)

您正在查找
基本关键字:

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;
        }
    }
}
1) 您要查找的语法是
base.Breed
。2) 就我个人而言,我会在“动物”中声明
enum dogbride{Corgi,Pug}