Let There Be Code RSS 2.0
# Tuesday, December 08, 2009

Si vous avez déjà fait de la Reflection alors vous connaissez surement la méthode GetCustomAttributes(bool inherit) de la classe MemberInfo qui permet de retrouver la liste des attributs d’un membre d’un type.

 

Comme vous vous en doutez le paramètre booléen inherit permet d’indiquer au framework s’il doit rechercher également dans les types de base (du style vous avez une propriété abstraite avec des attributs dans la classe de base, et cette propriété est « overridée » dans une classe fille).

Vous écrivez le code d’appel à la méthode GetCustomAttributes, vous exécutez et vous remarquez que l’attribut de la classe de base n’est pas trouvé.

 

Un petit tour sur la msdn : http://msdn.microsoft.com/en-us/library/kff8s254.aspx  

D’après la msdn voici à quoi sert le paramètre booléen inherit : 

 

image 

 

C’est donc bien ce que nous avions compris… le booléen permet d’indiquer que l’on veut également récupérer les attributs du membre des types de base.

L’exemple donné sur la msdn confirme bien l’utilisation de ce paramètre :

 

image 

 

Là je me pose la question : c’est quoi l’arnaque ? Qu’est-ce que j’ai pu louper dans l’utilisation de cette méthode ?

 

Comme d’habitude, qui vient à mon secours dans ces moments là ? Reflector!

Et là c’est l’hallu… Je vous laisse en juger par vous même :

 

clip_image001 

 

Eh oui vous voyez comme moi, le paramètre bool inherit n’est pas utilisé… en fait ici il ne sert à rien…

Certains diront que c’est un bug. Moi je préfère dire que ce n’en ai pas un, que c’est juste une méthode qui n’est pas tout à fait terminée… chez moi j’appelle ça un bug normal, mais peu importe.

 

Heureusement il y a toujours une solution !! Il suffit d’utiliser la méthode statique System.Attribute.GetCustomAttributes(MemberInfo m, bool inherit).  

Comme vous pouvez le voir ci-dessous celle-ci fait bien ce qu’on lui demande de faire :

 

clip_image005 

 

Ce genre d’oubli me rassure tout de même, car je me dis que finalement ce sont des hommes comme vous et moi qui codent le framework.

Tuesday, December 08, 2009 5:10:02 PM (Paris, Madrid, UTC+01:00)  #    Voir Commentaires
C# | Framework .Net
Archive
<March 2010>
SunMonTueWedThuFriSat
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910
About the author/Disclaimer

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.

© Copyright 2010
Benoît Laut
Sign In
All Content © 2010, Benoît Laut
DasBlog theme 'Business' created by Christoph De Baene (delarou)