我正在尝试编写在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/

10-13 05:57