Я использую стороннюю библиотеку JInt (интерпретатор JavaScript), которая работала нормально, пока я не переключился на Mac OS X, после чего я продолжаю получать ArgumentNullExceptions, после некоторого исследования я обнаружил, что JInt использует динамическийгенерация кода для создания своего рода моста Js-Clr.Этот метод имеет следующие инструкции в конце:
code.Emit(OpCodes.Ldnull);
FieldInfo fieldInfo = typeof(JsUndefined).GetField("Instance");
code.Emit(OpCodes.Ldfld, fieldInfo);
Вот как эти строки выполняются (полный размер экрана здесь )
![enter image description here](https://i.stack.imgur.com/gy3m3.png)
Хорошо видно, что аргумент fieldInfo
не является нулевым, хотя когда дело доходит до выполнения этих строк, обратите внимание, что LDFLD не имеет аргумента!(Полный скриншот здесь ):
![enter image description here](https://i.stack.imgur.com/oJhXS.png)
Мой текущий оператор, который будет выполнен, - это Ldnull, я выполняю «Step In» (Over Ldnull) и BANGисключение происходит через Ldfld (полный размер экрана здесь ) ::
![enter image description here](https://i.stack.imgur.com/rpTvd.png)
Есть предложения?