Condividi tramite


Creare metodi e assembly dinamici

Questa sezione descrive un set di tipi gestiti nello System.Reflection.Emit spazio dei nomi che consentono a un compilatore o a uno strumento di generare metadati e common intermediate language (CIL) in fase di esecuzione e, facoltativamente, generare un file eseguibile portabile (PE) su disco. Questo spazio dei nomi viene usato principalmente da moduli di gestione di script e compilatori. In questa sezione, la funzionalità fornita dallo System.Reflection.Emit spazio dei nomi viene definita reflection emit.

La reflection emit offre le funzionalità seguenti:

  • Definizione di metodi globali di tipo lightweight in fase di esecuzione mediante la classe DynamicMethod ed esecuzione di tali metodi mediante delegati.
  • Definizione di assembly in fase di esecuzione, quindi esecuzione e/o salvataggio di tali assembly su disco.
  • Definizione di assembly in fase di esecuzione, quindi esecuzione e scaricamento per consentire al processo di Garbage Collection di recuperare le risorse.
  • Definizione di moduli in nuovi assembly in fase di esecuzione, quindi esecuzione e/o salvataggio di tali assembly su disco.
  • Definizione di tipi in moduli in fase di esecuzione, creazione di istanze di tali tipi e chiamate ai relativi metodi.
  • Definizione di informazioni relative ai simboli per i moduli definiti, che possono essere usate da strumenti quali debugger e analizzatori di codice.

Oltre ai tipi gestiti nello System.Reflection.Emit spazio dei nomi, sono disponibili interfacce di metadati non gestite descritte nella documentazione di riferimento sulle interfacce dei metadati . La reflection emit gestita garantisce un controllo degli errori semantici più completo e un livello di astrazione dei metadati più alto rispetto alle interfacce di metadati non gestite.

Un'altra risorsa utile per l'uso di metadati e CIL è la documentazione dell'interfaccia della riga di comando (Common Language Infrastructure), in particolare "Partition II: Metadata Definition and Semantics" e "Partition III: CIL Instruction Set". La documentazione è disponibile online nel sito Web Ecma.

Riferimento

OpCodes
Cataloga i codici di istruzione CIL che è possibile usare per compilare corpi dei metodi.

System.Reflection.Emit
Contiene le classi gestite usate per creare metodi, assembly e tipi dinamici.

Type
Illustra la classe Type, che rappresenta i tipi nella reflection gestita e nella reflection emit, e descrive i concetti fondamentali relativi all'uso di queste tecnologie.

System.Reflection
Contiene le classi gestite usate per esaminare i metadati e il codice gestito.