我正在使用第 3 方库 JInt(JavaScript 解释器),它在我切换到 Mac OS X 之前运行良好,之后我不断收到 ArgumentNullExceptions,经过一番调查,我发现 JInt 使用动态代码生成制作某种 Js-Clr 桥梁。该方法最后有以下说明:
code.Emit(OpCodes.Ldnull);
FieldInfo fieldInfo = typeof(JsUndefined).GetField("Instance");
code.Emit(OpCodes.Ldfld, fieldInfo);
以下是这些行的执行方式(此处为全尺寸截图)
可以清楚地看到,fieldInfo
参数不为空,但在执行这些行时,请注意 LDFLD 没有参数!(此处为全尺寸截图):
我当前将要执行的语句是 Ldnull,我执行“Step In”(在 Ldnull 上)并且在 Ldfld 上发生 BANG 异常(此处为全尺寸屏幕截图)::
有什么建议么?