public abstract class Shape
{
public String toString()
{
// ...
return "";
}
}
public class Rectangle : Shape
{
public Double width { get; set; }
public Double height { get; set; }
}
假設我從Rectangle類創建了一個對象。有沒有辦法通過創建的對象寫入Rectangle類對象的屬性值,而不必重寫toString()方法?從基類獲取子類屬性
編輯:
其實我的目的是創建所有子類的通用ToString()方法。
我修改我的代碼
public abstract class Shape
{
public virtual String ToString(Shape shape)
{
String result = String.Empty;
foreach (var property in shape.GetType().GetProperties())
{
result += property.Name + " : " + property.GetValue(shape, null) + "\n";
}
return result;
}
}
public class Rectangle : Shape, IRectangle
{
public Double width { get; set; }
public Double height { get; set; }
public override String ToString()
{
return base.ToString(this);
}
}
結果:
width : 0
height : 0
但現在,我必須重寫ToString()方法爲所有子類。我無法找到此代碼複製的解決方案
「寫Recatangle類對象的屬性...」我不確定我跟隨。 –
不,這是不可能的,因爲基類沒有任何關於派生類的知識。 –
坦率地說,以其他方式做更多的工作。 –