Creazione di assembly e metodi dinamici
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 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 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 Metadata Interfaces. 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 online sul sito Web MSDN e sul sito Web Ecma (informazioni in lingua inglese).
In questa sezione
Astrazioni di reflection emit
Vengono elencate e descritte le classi della reflection emit che possono essere utilizzate per definire assembly e tipi, metodi e parametri di metodi, eventi, costruttori, proprietà e così via.Assembly ritirabili per la generazione di tipi dinamici
Vengono descritti la creazione e l'utilizzo di assembly dinamici che possono essere scaricati e essere recuperati dal processo di Garbage Collection quando nessuno dei tipi contenuti è raggiungibile dal codice in esecuzione.Scenari relativi a metodi dinamici della reflection emit
Viene illustrato come definire e utilizzare i metodi dinamici di tipo lightweight.Scenari relativi ad assembly dinamici della reflection emit
Viene illustrato lo scenario principale della reflection emit tramite la creazione di un modulo dinamico definito in un assembly dinamico.Scenari di applicazioni della reflection emit
Vengono illustrati gli scenari di applicazione supportati dalla reflection emit, incluse l'esecuzione di uno script in un Web browser e in una pagina ASP.NET e la compilazione di un'espressione regolare.Problemi di sicurezza nella reflection emit
Vengono descritti i problemi di sicurezza relativi alla creazione di assembly dinamici mediante la reflection emit.Utilizzo della reflection emit
Vengono descritte le attività fondamentali che è possibile eseguire tramite la reflection emit e vengono illustrate le procedure per la generazione di metodi dinamici leggeri e la creazione di tipi e metodi generici.Ulteriori informazioni sulla reflection emit
Viene descritta altra documentazione relativa alla reflection emit.
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
Reflection
Viene illustrato come esaminare i metadati e il codice gestito.Assembly in Common Language Runtime
Viene fornita una panoramica degli assembly in .NET Framework.