Parser une assembly

Equinox84 Messages postés 63 Date d'inscription lundi 2 février 2004 Statut Membre Dernière intervention 19 mai 2010 - 17 sept. 2007 à 16:03
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 - 18 sept. 2007 à 09:11
Bonjour tout le monde,

Une petite question qui porte sur la récupération d'un type dans une assembly
Si j'ai plusieurs classes qui implementent une interface et que je veux récupérer une classe en particulier, comment je peux me débrouiller pour
mettre un attribut ou quelque chose comme ca sur les classe que je puisse tester dans mon parsage.
J'ai plusieurs classes qui implémente IGestionnaire et je voudrais en trouver une qui gére le protocole que je veux.

Merci

2 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
17 sept. 2007 à 23:03
salut,

tu peux utiliser les attributs en effet :
-> tu crées ton attribut dérivé de Attribute avec par exemple un membre publiques ou une propriété qui donne le nom du protocole et un constructeur qui prend en paramètre ce protocole
-> tu appliques l'attribut à tes classes qui implémentent ton IGestionnaire avec un nom de protocole différent à chaque fois
-> quand tu as récupéré la liste des tes classes, tu récupéres pour chacune d'elle sont Type et tu appelles la méthode GetCustomAttributes(typeof(TonAttributAttribute),true) (true, pour rechercher l'attribut aussi dans l'héritage (ca peut servir))...
-> ca te renvoie une tableau d'attributs dont tu peux récupérer la propriété ou champs publique qui contient le nom de ton protocole...

ShareVB
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
18 sept. 2007 à 09:11
Voici un exemple de source avec parcours de type et recherche d'attributs : http://www.csharpfr.com/codes/MAPPING-ATTRIBUTS-EXEMPLE-UTILISATION_34726.aspx

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
0
Rejoignez-nous