Ist es möglich, generische CIL-Anweisungen zu schreiben, die Instanzen eines beliebigen Typs (Wert und Referenz) in System.String konvertieren? Insbesondere interessiert mich Mono.Cecil Code, der diese Anweisungen in eine Methode injizieren wird.Gibt es einen generischen CIL-Code, um eine beliebige Typinstanz in eine Zeichenfolge zu konvertieren?
eine generische Methode analysiert ich mit dieser Mono.Cecil kam ruft: (es soll die i-te Methode Parameter Zeichenfolge konvertieren)
System.Reflection.MethodInfo to_string_method_info = typeof(System.Object).GetMethod("ToString");
Mono.Cecil.MethodReference to_string_reference = injectible_assembly.MainModule.Import(to_string_method_info);
Mono.Cecil.TypeReference argument_type = method_definition.Parameters[ i ].ParameterType;
method_definition.Body.Instructions.Add(processor.Create(Mono.Cecil.Cil.OpCodes.Constrained, argument_type));
method_definition.Body.Instructions.Add(processor.Create(Mono.Cecil.Cil.OpCodes.Callvirt, to_string_reference));
Wenn ich jedoch eine Ausnahme von der Get Debuggen injected-Methode, dass der "JIT-Compiler auf interne Begrenzung stieß".
In solchen Fällen kann PEVerify sehr nützlich sein, weil es Ihnen sagen kann, welchen spezifischen Fehler Ihr Code hat. – svick