Voici un court programme.
Que retourne t-il ?
Code :
- // je choppe une méthode (n'importe laquelle)
- MemberInfo mi1 = typeof(XmlDocument).GetMethod("ToString" );
- // je choppe son module & son metadatatoken
- Module module = mi1.Module;
- int token = mi1.MetadataToken;
- // maintenant, dans le module, j'essaye de retrouver le même MemberInfo
- MemberInfo mi2 = module.ResolveMember(token);
- // Et là, j'hallucine
- Console.WriteLine((mi1 == mi2) + " = (mi1 == mi2)" );
- Console.WriteLine((mi1.Equals(mi2)) + " = (mi1.Equals(mi2))" );
- Console.WriteLine(MemberInfo.ReferenceEquals(mi1, mi2) + " = (MemberInfo.ReferenceEquals(mi1, mi2)" );
- Console.WriteLine((mi1.GetHashCode() == mi2.GetHashCode()) + " = (mi1.GetHashCode() == mi2.GetHashCode()" );
|
Réponse :
Faux
Faux
Faux
Vrai
Quelqu'un peut m'expliquer comment c'est possible ?
Mose, très énervé contre MS qui sait pas gérer la compatiblité ascendante