OVH Cloud OVH Cloud

Reflection ?

1 réponse
Avatar
ChristopheG
Bonjour,
Voila, j'aimerais essayé de lister dynamiquement les classes présentes
dans un espace de nom donné.
En pratique je veut faire une fonction qui renvois une liste de toutes
les classes dérivée d'une classe particulière présente dans un namespace
donné.
Ensuite l'objectif est d'instancié dynamiquement chaque classe de la
liste, mais cela devrait être plus simple.

Je ne sais pas trop comment lister les classes et quelles type
d'éléments doit être présent dans la liste pour pouvoir être instancier.

Merci d'avance.

1 réponse

Avatar
Paul Bacelar
L'unité de chargement d'exécutable en .NET est l'assembly.



La methode Assembly.GetExportedTypes() permet d'avoir la liste des types
publique d'une assembly.

http://msdn2.microsoft.com/en-us/library/system.reflection.assembly.getexportedtypes.aspx



Type.Namespace Property permet d'avoir le namespace d'un type, c'est donc un
critère de filtrage

http://msdn2.microsoft.com/en-us/library/system.type.namespace.aspx



Utilisez Type.IsSubclassOf() pour savoi si un type dérive d'un autre

http://msdn2.microsoft.com/en-us/library/system.type.issubclassof.aspx



Utilisez Type.GetConstructor(...) pour avoir objet représantant un
constructeur du type ayant une signature connue.

http://msdn2.microsoft.com/en-us/library/system.type.getconstructor.aspx



Utilisez la classe Activator pour créer des instances d'objet

http://msdn2.microsoft.com/en-us/library/system.activator.aspx
--
Paul Bacelar
MVP VC++


"ChristopheG" wrote in message
news:e9l2mq$2tk$
Bonjour,
Voila, j'aimerais essayé de lister dynamiquement les classes présentes
dans un espace de nom donné.
En pratique je veut faire une fonction qui renvois une liste de toutes les
classes dérivée d'une classe particulière présente dans un namespace
donné.
Ensuite l'objectif est d'instancié dynamiquement chaque classe de la
liste, mais cela devrait être plus simple.

Je ne sais pas trop comment lister les classes et quelles type d'éléments
doit être présent dans la liste pour pouvoir être instancier.

Merci d'avance.