Module.ResolveField выбрасывает BadImageFormatException из-за отсутствия общего контекста при разборе GetILAsByteArray - PullRequest
0 голосов
/ 21 февраля 2019

При разборе массива байтов IL , после разбора следующего операнда:

OperandType        : InlineField
FlowControl        : Next
OpCodeType         : Objmodel
StackBehaviourPop  : Popref_pop1
StackBehaviourPush : Push0
Size               : 1
Value              : 125
Name               : stfld

В большинстве случаев я могу разрешить следующее имя поля, используя Module.ResolveField передав 32-битное значение, которое следует за операндом.

Однако в некоторых случаях выдается ошибка:

Исключение вызывает "ResolveField" с аргументом (ами) "1":«При разборе подписи возникло исключение BadImageFormatException. Вероятно, это связано с отсутствием универсального контекста. Убедитесь, что genericTypeArguments и genericMethodArguments предоставлены и содержат достаточно контекста.»

Основано на документации Microsoft, которую я подозреваюэто связано с тем, что мне нужно передать genericTypeArguments и genericMethodArguments в соответствии с https://docs.microsoft.com/en-us/dotnet/api/system.reflection.module.resolvefield?view=netframework-4.7.2#System_Reflection_Module_ResolveField_System_Int32_System_Type___System_Type___

При синтаксическом анализе массива ILBytes, какой лучший способ определить, что мне нужно передать эти параметры?

...