ILGenerator Classe

Definizione

Genera Microsoft istruzioni MSIL (Intermediate Language).

public ref class ILGenerator abstract
public ref class ILGenerator
public ref class ILGenerator : System::Runtime::InteropServices::_ILGenerator
public abstract class ILGenerator
public class ILGenerator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
public class ILGenerator : System.Runtime.InteropServices._ILGenerator
[System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)]
[System.Runtime.InteropServices.ComVisible(true)]
public class ILGenerator : System.Runtime.InteropServices._ILGenerator
type ILGenerator = class
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
type ILGenerator = class
    interface _ILGenerator
[<System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.None)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type ILGenerator = class
    interface _ILGenerator
Public MustInherit Class ILGenerator
Public Class ILGenerator
Public Class ILGenerator
Implements _ILGenerator
Ereditarietà
ILGenerator
Attributi
Implementazioni

Commenti

ILGenerator viene usato per generare corpi di metodo per metodi e costruttori negli assembly dinamici (rappresentati dalle MethodBuilder classi e ConstructorBuilder ) e per i metodi dinamici autonomi (rappresentati dalla DynamicMethod classe ). Per ottenere un ILGeneratoroggetto , utilizzare i ConstructorBuilder.GetILGeneratormetodi , DynamicMethod.GetILGeneratore MethodBuilder.GetILGenerator .

MSIL viene usato come input per un compilatore JIT (Just-In-Time).

Avvertimento

Non esistono restrizioni, oltre alla convalida di base, per le API ILGenerator che producono il metodo IL. Se l'input non attendibile viene usato per produrre IL:

  • I metadati e IL possono contenere segreti forniti dal consumer.
  • IL può non essere valido, ad esempio non avere push bilanciato rispetto a opcode pop o operandi non validi per un determinato codice operativo.
  • IL può contenere qualsiasi codice che potrebbe, ad esempio, deadlock, avere ricorsione dello stack infinito o avere un ciclo infinito.
  • IL può caricare ed eseguire codice in qualsiasi altro assembly raggiungibile.

Tale codice può eseguire qualsiasi operazione desiderata quando il metodo viene caricato ed eseguito. Per proteggersi da tali vulnerabilità, ILGenerator richiede un ambiente completamente attendibile con input attendibile.

Costruttori

Nome Descrizione
ILGenerator()

Inizializza una nuova istanza della classe ILGenerator.

Proprietà

Nome Descrizione
ILOffset

Ottiene l'offset corrente, in byte, nel flusso MSIL (Microsoft Intermediate Language) generato dall'oggetto ILGenerator.

Metodi

Nome Descrizione
BeginCatchBlock(Type)

Avvia un blocco catch.

BeginExceptFilterBlock()

Avvia un blocco di eccezioni per un'eccezione filtrata.

BeginExceptionBlock()

Avvia un blocco di eccezioni per un'eccezione non filtrata.

BeginFaultBlock()

Avvia un blocco di errore di eccezione nel flusso Microsoft MSIL (Intermediate Language).

BeginFinallyBlock()

Avvia un blocco finally nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

BeginScope()

Inizia un ambito lessicale.

CreateLabel(Int32)

Crea un Label oggetto con l'ID specificato.

DeclareLocal(Type, Boolean)

Dichiara una variabile locale del tipo specificato, aggiungendo facoltativamente l'oggetto a cui fa riferimento la variabile.

DeclareLocal(Type)

Dichiara una variabile locale del tipo specificato.

DefineLabel()

Dichiara una nuova etichetta.

Emit(OpCode, Byte)

Inserisce l'istruzione e l'argomento carattere specificati nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, ConstructorInfo)

Inserisce l'istruzione e il token di metadati specificati per il costruttore specificato nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, Double)

Inserisce l'istruzione e l'argomento numerico specificati nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, FieldInfo)

Inserisce l'istruzione e il token di metadati specificati per il campo specificato nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, Int16)

Inserisce l'istruzione e l'argomento numerico specificati nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, Int32)

Inserisce l'istruzione e l'argomento numerico specificati nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, Int64)

Inserisce l'istruzione e l'argomento numerico specificati nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, Label)

Inserisce l'istruzione specificata nel flusso MSIL (Intermediate Language) Microsoft e lascia spazio per includere un'etichetta al termine delle correzioni.

Emit(OpCode, Label[])

Inserisce l'istruzione specificata nel flusso MSIL (Intermediate Language) Microsoft e lascia spazio per includere un'etichetta al termine delle correzioni.

Emit(OpCode, LocalBuilder)

Inserisce l'istruzione specificata nel flusso MSIL (Intermediate Language) Microsoft seguito dall'indice della variabile locale specificata.

Emit(OpCode, MethodInfo)

Inserisce l'istruzione specificata nel flusso MSIL (Intermediate Language) Microsoft seguito dal token di metadati per il metodo specificato.

Emit(OpCode, SByte)

Inserisce l'istruzione e l'argomento carattere specificati nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, SignatureHelper)

Inserisce l'istruzione specificata e un token di firma nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, Single)

Inserisce l'istruzione e l'argomento numerico specificati nel flusso di istruzioni MSIL (Intermediate Language) Microsoft.

Emit(OpCode, String)

Inserisce l'istruzione specificata nel flusso MSIL (Intermediate Language) Microsoft seguito dal token di metadati per la stringa specificata.

Emit(OpCode, Type)

Inserisce l'istruzione specificata nel flusso MSIL (Intermediate Language) Microsoft seguito dal token di metadati per il tipo specificato.

Emit(OpCode)

Inserisce l'istruzione specificata nel flusso di istruzioni.

EmitCall(OpCode, MethodInfo, Type[])

Inserisce un'istruzione o nel flusso MSIL (Microsoft Intermediate Language) per chiamare un metodo />

EmitCalli(OpCode, CallingConvention, Type, Type[])

Inserisce un'istruzione Calli nel flusso Microsoft MSIL (Intermediate Language), specificando una convenzione di chiamata non gestita per la chiamata indiretta.

EmitCalli(OpCode, CallingConventions, Type, Type[], Type[])

Inserisce un'istruzione Calli nel flusso Microsoft MSIL (Intermediate Language), specificando una convenzione di chiamata gestita per la chiamata indiretta.

EmitCalli(Type)

Genera Microsoft istruzioni MSIL (Intermediate Language).

EmitWriteLine(FieldInfo)

Genera l'Microsoft linguaggio intermedio (MSIL) necessario per chiamare WriteLine con il campo specificato.

EmitWriteLine(LocalBuilder)

Genera il Microsoft linguaggio intermedio (MSIL) necessario per chiamare WriteLine con la variabile locale specificata.

EmitWriteLine(String)

Genera il Microsoft linguaggio intermedio (MSIL) per chiamare WriteLine con una stringa.

EndExceptionBlock()

Termina un blocco di eccezioni.

EndScope()

Termina un ambito lessicale.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MarkLabel(Label)

Contrassegna la posizione corrente del flusso MSIL (Intermediate Language) Microsoft con l'etichetta specificata.

MarkSequencePoint(ISymbolDocumentWriter, Int32, Int32, Int32, Int32)

Contrassegna un punto di sequenza nel flusso MSIL (Intermediate Language) Microsoft.

MarkSequencePointCore(ISymbolDocumentWriter, Int32, Int32, Int32, Int32)

Quando sottoposto a override in una classe derivata, contrassegna un punto di sequenza nel flusso Microsoft MSIL (Intermediate Language).

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ThrowException(Type)

Genera un'istruzione per generare un'eccezione.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
UsingNamespace(String)

Specifica lo spazio dei nomi da usare per valutare le variabili locali e controllare l'ambito lessicale attivo corrente.

Implementazioni dell'interfaccia esplicita

Nome Descrizione
_ILGenerator.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Esegue il mapping di un set di nomi a un set corrispondente di identificatori dispatch.

_ILGenerator.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto che può quindi essere usato per ottenere informazioni sul tipo relative a un'interfaccia.

_ILGenerator.GetTypeInfoCount(UInt32)

Recupera il numero di interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).

_ILGenerator.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso alle proprietà e ai metodi esposti da un oggetto .

Si applica a