我正在尝试编写在mscorlib中调用方法的IL,但是我不知道如何获取ModuleDefinition
到mscorlib以实际引用类型和方法,而缺少文档和Google。
最佳答案
为mscorlib获取ModuleDefinition非常容易。这是一个简单的方法:
ModuleDefinition corlib = ModuleDefinition.ReadModule (typeof (object).Module.FullyQualifiedName);
但是,如果在mscorlib中注入(inject)了调用方法的代码,则不必自己加载模块。例如:
MethodDefinition method = ...;
ILProcessor il = method.Body.GetILProcessor ();
Instruction call_writeline = il.Create (
OpCodes.Call,
method.Module.Import (typeof (Console).GetMethod ("WriteLine", Type.EmptyTypes)));
创建一条指令以调用Console.WriteLine();
至于文档,请阅读Wiki上的importing页面。
关于.net - Mono-Cecil : How can I get a ModuleDefinition for mscorlib?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3195745/