是否可以編寫通用的CIL指令,它將任何類型(值和引用)的實例轉換爲System.String? 特別是,我對Mono.Cecil代碼感興趣,它將這些指令注入方法中。是否有一個通用的CIL代碼將任何類型的實例轉換爲字符串?
分析我想出了這些Mono.Cecil能泛型方法調用: (它應該給我個方法參數字符串轉換)
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));
然而,當我調試從得到一個異常注入方法「JIT編譯器遇到內部限制」。
在這種情況下,PEVerify可以非常有用,因爲它可以告訴你代碼有什麼特定的錯誤。 – svick