Comment définir la directive .maxstack avec ILGenerator?Comment définir ".maxstack" avec ILGenerator
Par exemple, une méthode setter typique a une .maxstack de :
.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
Il est possible de définir des métadonnées avec ILGenerator
car il offre en fait DefineLabel et DeclareLocal, alors pourquoi ne pas offre une méthode SetMaxStack(short/int)
ou quelque chose de similaire?
Si je ne peux pas définir ces métadonnées, comment Reflecion.Emit
détermine-t-il la taille de la pile? Est-ce qu'il le définit à la valeur maximale possible? Ou peut-être que la pile se développe automatiquement à l'exécution?
Il ne vous fait pas confiance pour le faire correctement. DeclareLocal() obtient toujours le droit. –