我无法使用基类对象访问派生类的属性成员.
场景:
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)
您在派生类中访问属性时遇到问题的原因是基类没有(更重要的是不应该)知道它们的任何信息.不同的派生类可以具有不同的添加属性集.让基类意识到这一点会抵消面向对象设计的重要原则.想到的一个原则是Liskov替代原则.