Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe DynamicILInfo

Fornisce supporto per utilizzare metodi alternativi per generare codice MSIL (Microsoft Intermediate Language) e metadati per un metodo dinamico, inclusi metodi per la creazione di token e per l'inserimento di codice, gestione delle eccezioni e blob di firma per le variabili locali.

System.Object
  System.Reflection.Emit.DynamicILInfo

Spazio dei nomi:  System.Reflection.Emit
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public class DynamicILInfo

Il tipo DynamicILInfo espone i seguenti membri.

  NomeDescrizione
Proprietà pubblicaDynamicMethodOttiene il metodo dinamico il cui corpo viene generato dall'istanza corrente.
In alto

  NomeDescrizione
Metodo pubblicoEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetTokenFor(Byte[])Ottiene un token, valido nell'ambito della classe DynamicILInfo corrente, che rappresenta la firma per il metodo dinamico associato.
Metodo pubblicoGetTokenFor(DynamicMethod)Ottiene un token, valido nell'ambito della classe DynamicILInfo corrente, che rappresenta un metodo dinamico da chiamare dal metodo associato.
Metodo pubblicoGetTokenFor(RuntimeFieldHandle)Ottiene un token, valido nell'ambito della classe DynamicILInfo corrente, che rappresenta un campo a cui accedere dal metodo dinamico associato.
Metodo pubblicoGetTokenFor(RuntimeMethodHandle)Ottiene un token, valido nell'ambito della classe DynamicILInfo corrente, che rappresenta un metodo dinamico a cui accedere dal metodo dinamico associato.
Metodo pubblicoGetTokenFor(RuntimeTypeHandle)Ottiene un token, valido nell'ambito della classe DynamicILInfo corrente, che rappresenta un tipo da utilizzare nel metodo dinamico associato.
Metodo pubblicoGetTokenFor(String)Ottiene un token, valido nell'ambito della classe DynamicILInfo corrente, che rappresenta una stringa letterale da utilizzare nel metodo dinamico associato.
Metodo pubblicoGetTokenFor(RuntimeFieldHandle, RuntimeTypeHandle)Ottiene un token, valido nell'ambito della classe DynamicILInfo corrente, che rappresenta un campo a cui accedere dal metodo dinamico associato; il campo si trova sul tipo generico specificato.
Metodo pubblicoGetTokenFor(RuntimeMethodHandle, RuntimeTypeHandle)Ottiene un token, valido nell'ambito della classe DynamicILInfo corrente, che rappresenta un metodo in un tipo generico.
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo protettoMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoSetCode(Byte[], Int32)Imposta il corpo del codice del metodo dinamico associato.
Metodo pubblicoSetCode(Byte*, Int32, Int32)Imposta il corpo del codice del metodo dinamico associato.
Metodo pubblicoSetExceptions(Byte[])Imposta i metadati delle eccezioni del metodo dinamico associato.
Metodo pubblicoSetExceptions(Byte*, Int32)Imposta i metadati delle eccezioni del metodo dinamico associato.
Metodo pubblicoSetLocalSignature(Byte[])Imposta la firma delle variabili locali che descrive il layout delle variabili locali per il metodo dinamico associato.
Metodo pubblicoSetLocalSignature(Byte*, Int32)Imposta la firma delle variabili locali che descrive il layout delle variabili locali per il metodo dinamico associato.
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto

La classe DynamicILInfo consente agli sviluppatori di scrivere generatori di codice MSIL personalizzati anziché utilizzare la classe ILGenerator.

Per creare istanze di altri tipi, chiamare metodi e così via, il codice MSIL generato deve includere i token per tali entità. La classe DynamicILInfo fornisce numerosi overload del metodo GetTokenFor, che restituiscono token validi nell'ambito della classe DynamicILInfo corrente. Se ad esempio è necessario chiamare un overload del metodo Console.WriteLine, è possibile ottenere una struttura RuntimeMethodHandle per l'overload e passarla al metodo GetTokenFor per ottenere un token da incorporare nel codice MSIL.

Una volta creato le matrici Byte per la firma delle variabili locali, le eccezioni e il corpo del codice, è possibile utilizzare i metodi SetCode, SetExceptions e SetLocalSignature e inserirli nella classe DynamicMethod associata all'oggetto DynamicILInfo.

La generazione di metadati e codice MSIL personalizzati richiede una conoscenza approfondita della documentazione relativa a CLI (Common Language Infrastructure), in particolare delle sezioni "Partition II: Metadata Definition and Semantics" e "Partition III: CIL Instruction Set". La documentazione è disponibile online alla pagina Web di MSDN ECMA C# and Common Language Infrastructure Standards e nel sito Web di ECMA, nel documento Standard ECMA-335 - Common Language Infrastructure (CLI), (informazioni in lingua inglese).

NotaNota

Non utilizzare DynamicILInfo per generare un codice che crea un delegato a un altro metodo dinamico chiamando direttamente il costruttore di delegato. Al contrario, utilizzare il metodo CreateDelegate per creare il delegato. Un delegato creato con il costruttore di delegato non dispone di un riferimento al metodo dinamico di destinazione. Il metodo dinamico potrebbe essere recuperato dalla Garbage Collection mentre il delegato è ancora in uso.

.NET Framework

Supportato in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft