Je veux créer une structure comme une arborescence totalement générique. Une chose comme celle-ci: Comme vous pouvez le voir dans cette source de classe, parent et aussi les enfants ont tous un type de données générique différent. Aussi, je veux que mon arboresigne ait un nombre illimité de niveaux (pas seulement 3). De cette façon, lorsque je veux travailler avec mes nœuds dans le code, tous vont être fortement typés. Pas seulement des objets que j'ai besoin de les convertir à leur type d'origine. p> est-il possible de créer ce type de structure en C #, un arborescence que tous ses nœuds sont fortement typés? P> merci p> p>
3 Réponses :
Bien, en dehors d'être un arbre, vous aurez des données sous-jacentes. Par exemple, un arbre de répertoire. Les attributs de répertoire sont son nom et une liste de répertoires d'enfants. Nous commençons en définissant un générique de sorte qu'un arborescence de répertoire simple est juste un ceci créerait un arbre comme celui-ci: p> Le seul moyen de faire une vue d'arborescence complètement générique est d'avoir la même chose Types Pour le nœud actuel, le nœud ci-dessus et tous les nœuds enfants, sinon vous devez résoudre la structure à l'heure de la compilation et supporter une hiérarchie définie. P> P> TreeItem code>.
arborestim
Oui, je sais comment créer ce type d'arborescence, lorsque tous les nœuds ont le même type de données. Mais ma question est de savoir comment le faire avec différents types de données et comment la rendre fortement typée
Après avoir lu la réponse Igors et votre commentaire et peut simplement dire que ce n'est pas possible de telle manière. Tout ce que vous pouvez faire est d'utiliser comme Mais si vous avez besoin de quelque part dans votre code, le type spécifique que vous aurez Besoin de le lancer, ce qui peut entraîner une sorte de rendement if-return ou si-else-si structure comme: p> mais c'est tout ce que vous pouvez faire. P> p> t code> du type de base que toutes les classes ont en commun, comme une classe de base ou une interface.
Ceci est le gros problème avec les structures de données d'arbres. Il est facile de définir des arbres homogènes, mais dans le monde réel, les arbres sont souvent composés de types d'objets hétérogènes. Un bon exemple de ceci est un système de fichiers, où l'arborescence contient des lecteurs, des dossiers et des fichiers. P>
Vous ne pouvez créer qu'un arbre de sécurité de type si vous connaissez exactement la forme de l'arbre à la compilation. Bien sûr, cela élimine chaque cas d'utilisation du monde réel pour les arbres. P>
Souhaitez-vous décrire comment je peux le créer
Vous voulez même avoir un type différent pour différents enfants?
Oui, j'ai aussi besoin de différents types d'enfants différents.