Как указано, name не существует в BaseClass.
Либо переместите «name» в базовый класс, либо создайте отдельный метод записи, который записывает специфические данные унаследованного класса.
public class DerivedClass : BaseClass{
public string Name { get; set; }
public override void Write(DerivedClass data) {
Console.printLn(data.Name);
base.Write(data)
}
// why print a different instance, just write self
public void Write() {
Console.printLn(this.Name);
base.Write(this)
}
}
Не уверен, почему класс принимает другой экземпляр класса для записи, когда вы можете просто вызвать запись для себя.Измените сигнатуру BaseClass на
public virtual Write()
или как WebControls
public virtual Write(HtmlTextWriter writer);
, если вы хотите просто отладить, вы можете просто сериализовать в JSON или XML и затем вывести это на консоль