J'ai un problème avec le code suivant:System.BadImageFormatException lorsque vous essayez de résoudre constructeur de System.Collections.Generic.GenericComparer`1
var type1 = typeof(object);
var type2 = type1.Module.GetType("System.Collections.Generic.GenericComparer`1");
var constr = type2.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, null);
var byteArray = constr.GetMethodBody().GetILAsByteArray();
var result = type2.Module.ResolveMethod(BitConverter.ToInt32(byteArray, 2));
Chaque fois que je l'exécute, il me donne l'erreur suivante:
An exception of type 'System.BadImageFormatException' occurred in mscorlib.dll and wasn't handled before a managed/native boundary
Additional information: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
Cependant, si insteaf de
var type2 = type1.Module.GetType("System.Collections.Generic.GenericComparer`1");
J'utilise sa classe de base
var type2 = type1.Module.GetType("System.Collections.Generic.Comparer`1");
puis "ResolveMethod" renvoie OK.
Est-ce que quelqu'un sait pourquoi cette classe ne peut pas être "résolue"?
Merci!
J'ai essayé de construire l'application à la fois 32 bits et 64 bits, et les deux donnent l'erreur. Je ne pense pas que cela ait quelque chose à voir avec ça. – Florin
Peut-être parce que 'GenericComparer' est interne? –
Ne le crois pas .. J'ai essayé avec System.Collections.StructuralComparer, qui est aussi interne, et ça marche .. – Florin