Je cherche/tring pour implémenter une implémentation de type coffre-fort en C#.in C# pour l'implémentation de l'arborescence de type safe (node typesafe)
Comment une arborescence de type sécurisée peut-elle être implémentée, sans utiliser d'interface (qui oblige à réimplémenter la fonctionnalité de l'arborescence un peu partout) et sans utiliser de conversions? J'ai l'idée d'utiliser l'arbre comme classe de base commune, mais alors la sécurité du type a disparu. Mon approche actuelle est l'utilisation de génériques. Mais il me manque une conversion vers le type de base.
Voici un exemple réduit/non fonctionnel. L'idée est que les nœuds renvoyés prennent en charge les fonctions de l'arborescence et, en même temps, prennent également en charge leur comportement des types de base. Je pourrais utiliser la classe below sans et hériter de Node, mais alors je perds la sécurité de type d'une part, et aussi des problèmes d'héritage, car les Nodes ont déjà des classes parentes. J'ai également joué avec des extensions de classe, mais je n'ai rien qui soit proche d'une solution possible.
Je pense que j'ai besoin d'un petit indice sur la façon de continuer. Merci d'avance.
public class Node<T> // .
{
public Node<T> parent;
public List<Node<T>> children;
protected Node()
{
children = new List<Node<T>>();
parent = null;
}
protected Node(Node<T> parent)
: this()
{
this.parent = parent;
parent.addChildren(this);
}
protected void addChildren(Node<T> child)
{
children.Add(child);
}
public Node<T> getRoot() // returns root node
public List<Node<T>> flatten() // return 1d-list of all nodes.
}
Le type de T peut-il varier pour chaque nœud de l'arborescence? Ou sera-t-il toujours le même dans tout l'arbre? – Soukai
Non (seulement les sous-classes). Mais je voudrais utiliser la même implémentation d'arbre pour un autre T. – James