Bonjour, comme dit dans le titre, j'aimerais savoir s'il était possible de lister les sous-classes d'une classe.
Merci
Bonjour, comme dit dans le titre, j'aimerais savoir s'il était possible de lister les sous-classes d'une classe.
Merci
c'est quoi sous-classe pour toi?
les classes qui en hérite ou les classes contenues dans la classe ("innertype")?
sinon cherche sur internet avec le mot-clé "reflection"![]()
merci de repondre, et c'est bien le listing des classe qui herite d'une classe.
Je vais voir ça de plus prés pour la reflection
bon ba j'ai regarder un peu partout pour la reflexion, j'ai trouver quelque truc mais je ne trouve pas le moyen d'avoir une liste des objets qui herite de la sur classe.
Si vous avez une idée , ce serait cool
Merci et a bientot
Salut,
à ma connaissance, ce n'est pas possible. Et pour une raison simple : les types de base ne sont pas censés être avertis de l'existence des types dérivés, et de plus les types dérivés peuvent se trouver dans n'importe quel autre assembly (enfin si ta classe de base est 'public' ou 'internal').
Par contre, tu peux (via la reflection toujours) lister tous les types d'un assembly donné, et vérifier s'ils héritent de ton type de base, avec la méthode "IsAssignableFrom", ou un truc du genre.
j'ai trouver le moyen, il suffit de chercher les Type ayant pour BaseType ma sur classe, mais ce que j'aimerais faire c'est instancié ces objets en les rajoutant dans une listes.
Avant je faisait simplement
Après cette liste remplit une combobox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 liste.Add(New Objet1()); liste.Add(New Objet2()); liste.Add(New Objet3());
Mais maintenant je me retrouver avec :
Voila j'espere que vous avez des idée. Mois je galere.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) { if (asm.GetName().Name != "mscorlib") { foreach (Type cls in asm.GetTypes()) { if (cls.BaseType != null && cls.BaseType.Name == "SurClasse") { //C'est ici que je dois rajouter l'objet instancié dans une liste } } } }
Merci
Partager