我有一個類別/文件樹結構。這兩個類別和文件都可以有父項,所以我從具有Parent屬性的公共基類中派生它們。由於所有的父母顯然總是類別(文件不能是父類),因此使節點的Parent屬性成爲CategoryNode類型似乎是有意義的。在基本類型中引用派生類型是否是錯誤的形式?
對於引用派生類的基類,它是不好的形式嗎?如果是這樣,爲什麼?如果是這樣,什麼是更好的方式來構造這個?
class Node {
public CategoryNode Parent {get; set;}
}
class File : Node {
...
}
class CategoryNode : Node {
...
}
AFAIU,它們都爲共享屬性擴展相同的基類,所以爲什麼不使用遞歸引用自己的單類?有額外的屬性來區分它們。 –
是的,這是不好的。導致循環依賴。 Base不應該知道Derived的任何內容。 – Tilak
@Furqan,File節點不需要CategoryNode所具有的額外內容,例如子節點,所以我不認爲它應該從CategoryNode派生。 – Kelsie