Creazione di assembly e metodi dinamici

Aggiornamento: novembre 2007

In questa sezione verrà descritto un insieme di tipi gestiti dello spazio dei nomi System.Reflection.Emit che consentono la creazione di metadati e codice MSIL (Microsoft Intermediate Language) da parte di compilatori o strumenti in fase di esecuzione ed eventualmente la generazione su disco di un file eseguibile portabile (PE, Portable Executable). Questo spazio dei nomi viene utilizzato principalmente da moduli di gestione di script e compilatori. In questa sezione si farà riferimento alle funzionalità fornite dallo spazio dei nomi System.Reflection.Emit con l'espressione reflection emit (creazione tramite la reflection).

La reflection emit fornisce le seguenti funzionalità:

  • 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 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 utilizzate da strumenti quali debugger e analizzatori di codice.

Oltre ai tipi gestiti dello spazio dei nomi System.Reflection.Emit, sono disponibili interfacce di metadati non gestite, descritte nella documentazione di riferimento Interfacce di 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 per l'utilizzo di metadati e codice MSIL è la documentazione CLI (Common Language Infrastructure), in particolare la seconda e la terza parte, relative rispettivamente alla semantica e alla definizione dei metadati e all'insieme di istruzioni. La documentazione è disponibile in linea sul sito Web MSDN e sul sito Web Ecma (informazioni in lingua inglese).

In questa sezione

Riferimenti

  • OpCodes
    Viene fornito un catalogo di codici di istruzioni MSIL che è possibile utilizzare per compilare i corpi dei metodi.

  • System.Reflection.Emit
    Vengono fornite le classi gestite utilizzate per creare metodi, assembly e tipi dinamici.

  • Type
    Viene illustrata la classe Type, che rappresenta i tipi nella reflection gestita e nella reflection emit, e vengono descritti i concetti fondamentali relativi all'utilizzo di queste tecnologie.

  • System.Reflection
    Vengono fornite le classi gestite utilizzate per esaminare i metadati e il codice gestito.

Sezioni correlate