il.EmitCall(OpCodes.Callvirt, getter, null);
等同于:

il.Emit(OpCodes.Callvirt,getter);
我不确定如何检查动态生成的 IL,所以...这是第二个相关问题。

最佳答案

是的。
Emit(OpCode, MethodInfo) 的来源以(验证后)开头

if (opcode.Equals(OpCodes.Call) || opcode.Equals(OpCodes.Callvirt) || opcode.Equals(OpCodes.Newobj))
{
    EmitCall(opcode, meth, null);
}

关于c# - IL Callvirt 等效吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9867438/

10-10 23:02