我有一个小问题。我正在尝试在我创建的方法中插入带有 Mono.Cecil 的指令集合。
Collection<Instruction> InstructionList = new Collection<Instruction>();
要添加没有操作数的普通指令,例如“Ret”或“ldarg.0”,我只需这样做:
InstructionList.Add(Instruction.Create(OpCodes.Ret));
但是我在创建具有如下操作数的指令时遇到问题(图片):
http://puu.sh/bzWi8/710c8008df.png
有人可以解释一下如何使用这些操作数添加指令,例如 ldsfld 空字符串或 br.s 或 callvirt。
我不知道该怎么做。
我的尝试是这样的:
InstructionList.Add(Instruction.Create(OpCodes.Ldsfld, ModuleDef.Import(typeof(System.String))));
但这会引发异常: Mono.Cecil.dll 中发生了“System.ArgumentException”类型的未处理异常附加信息:OpCode
有人可以解释一下如何添加这些“更复杂”的指令吗?