Tengo una estructura de árbol de categoría/archivo. Ambas categorías y archivos pueden tener padres, por lo que los derivé de una clase base común que tiene una propiedad Parent. Dado que todos los padres, obviamente, siempre serán categorías (los archivos no pueden ser padres), parece tener sentido hacer que la propiedad principal del nodo sea del tipo CategoryNode.¿Es mala forma referirse a un tipo derivado en un tipo base?
¿Es malo que la clase base se refiera a la clase derivada? Si es así, ¿por qué? ¿Cuál es una mejor manera de estructurar esto, si es así?
class Node {
public CategoryNode Parent {get; set;}
}
class File : Node {
...
}
class CategoryNode : Node {
...
}
AFAIU, ambos amplían la misma clase base para compartir propiedades, entonces ¿Por qué no usar en una sola clase con referencia recursiva a sí mismo? con propiedades adicionales para distinguirlos. –
sí, eso es malo. Causa dependencia circular. La base no debería saber nada sobre Derived. – Tilak
@Furqan, el nodo Archivo no necesita las cosas adicionales que tiene CategoryNode, como los niños, por lo que no creo que deba derivarse de CategoryNode. – Kelsie