Как установить .maxstack директива с ILGenerator?Как установить «.maxstack» с ILGenerator
Например, типичный метод сеттер имеет .maxstack из :
.maxstack 2 // The evaluation stack has a max size of 2
IL_0000: ldarg.0 // the current instance (this)
IL_0001: ldarg.1 // new value
IL_0002: stfld Int32 _someField // stores the new value on _someField
IL_0007: ret // Return to caller
Можно установить метаданных с ILGenerator
, поскольку она фактически предлагает DefineLabel и DeclareLocal, так почему бы не так предложить метод SetMaxStack(short/int)
или что-то подобное?
Если я не могу установить эти метаданные, как Reflecion.Emit
определяет размер стека? Устанавливает ли он максимальное возможное значение? Или, может быть, стек автоматически расширяется во время выполнения?
Это не значит, что вы делаете это правильно. DeclareLocal() всегда получает это правильно. –