Ich habe eine Kategorie/Datei Baumstruktur. Beide Kategorien und Dateien können Eltern haben, daher habe ich sie aus einer gemeinsamen Basisklasse mit einer Parent-Eigenschaft abgeleitet. Da alle Eltern offensichtlich immer Kategorien sind (Dateien können keine Eltern sein), scheint es sinnvoll zu sein, die Parent-Eigenschaft des Knotens zum CategoryNode-Typ zu machen.Ist es eine schlechte Form, auf einen abgeleiteten Typ in einem Basistyp zu verweisen?
Ist es eine schlechte Form für die Basisklasse, auf die abgeleitete Klasse zu verweisen? Wenn ja warum? Was ist eine bessere Möglichkeit, dies zu strukturieren, wenn ja?
class Node {
public CategoryNode Parent {get; set;}
}
class File : Node {
...
}
class CategoryNode : Node {
...
}
AFAIU, beide erweitern die gleiche Basisklasse für die Freigabe von Eigenschaften, also warum nicht auf einzelne Klasse mit rekursiven Verweis auf sich selbst verwenden? mit zusätzlichen Eigenschaften, um sie zu unterscheiden. –
ja das ist schlecht. Bewirkt eine zirkuläre Abhängigkeit. Base sollte nichts über Abgeleitet wissen. – Tilak
@Furqan, der File-Knoten braucht nicht die zusätzlichen Sachen, die CategoryNode hat, wie Kinder, also glaube ich nicht, dass er von CategoryNode abgeleitet sein sollte. – Kelsie