Ich habe ein Problem mit dem folgenden Code:System.BadImageFormatException, wenn sie versuchen Konstruktor System.Collections.Generic.GenericComparer`1 zu lösen
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));
Jedesmal, wenn ich es ausführen es gibt mir die folgende Fehlermeldung:
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)
wenn jedoch insteaf von
var type2 = type1.Module.GetType("System.Collections.Generic.GenericComparer`1");
benutze ich seine Basisklasse
var type2 = type1.Module.GetType("System.Collections.Generic.Comparer`1");
dann gibt "ResolveMethod" OK zurück.
Weiß jemand, warum diese Klasse nicht "aufgelöst" werden kann?
Vielen Dank!
I haben versucht, die Anwendung in 32-Bit- und 64-Bit, und beide geben, um den Fehler zu bauen. Ich glaube nicht, dass es damit zu tun hat. – Florin
Vielleicht weil 'GenericComparer' intern ist? –
Denke nicht so .. Ich habe versucht mit System.Collections.StructuralComparer, das ist auch intern, und es funktioniert .. – Florin