从CSharp中的基类对象访问派生类属性成员

sla*_*lao 0 c# inheritance

我无法使用基类对象访问派生类的属性成员.

场景:

public class BaseClass{
    public virtual Write(BaseClass data){
    }
}

public class DerivedClass : BaseClass{

    private string name:

    public string Name {get {return name} set {name = value;} }

    public override Write(BaseClass data){
     Console.println(data.Name);  // gives me error here
    }

}
Run Code Online (Sandbox Code Playgroud)

Fre*_*örk 6

您在派生类中访问属性时遇到问题的原因是基类没有(更重要的是不应该)知道它们的任何信息.不同的派生类可以具有不同的添加属性集.让基类意识到这一点会抵消面向对象设计的重要原则.想到的一个原则是Liskov替代原则.