Creazione di assembly e metodi dinamiciEmitting Dynamic Methods and Assemblies

Questa sezione descrive 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).This section describes a set of managed types in the System.Reflection.Emit namespace that allow a compiler or tool to emit metadata and Microsoft intermediate language (MSIL) at run time and optionally generate a portable executable (PE) file on disk. Questo spazio dei nomi viene usato principalmente da moduli di gestione di script e compilatori.Script engines and compilers are the primary users of this namespace. 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). In this section, the functionality provided by the System.Reflection.Emit namespace is referred to as reflection emit.

La reflection emit offre le funzionalità seguenti: Reflection emit provides the following capabilities:

  • Definizione di metodi globali di tipo lightweight in fase di esecuzione mediante la classe DynamicMethod ed esecuzione di tali metodi mediante delegati.Define lightweight global methods at run time, using the DynamicMethod class, and execute them using delegates.

  • Definizione di assembly in fase di esecuzione, quindi esecuzione e/o salvataggio di tali assembly su disco.Define assemblies at run time and then run them and/or save them to disk.

  • Definizione di assembly in fase di esecuzione, quindi esecuzione e scaricamento per consentire al processo di Garbage Collection di recuperare le risorse.Define assemblies at run time, run them, and then unload them and allow garbage collection to reclaim their resources.

  • Definizione di moduli in nuovi assembly in fase di esecuzione, quindi esecuzione e/o salvataggio di tali assembly su disco.Define modules in new assemblies at run time and then run and/or save them to disk.

  • Definizione di tipi in moduli in fase di esecuzione, creazione di istanze di tali tipi e chiamate ai relativi metodi.Define types in modules at run time, create instances of these types, and invoke their methods.

  • Definizione di informazioni relative ai simboli per i moduli definiti, che possono essere usate da strumenti quali debugger e analizzatori di codice.Define symbolic information for defined modules that can be used by tools such as debuggers and code profilers.

Oltre ai tipi gestiti dello spazio dei nomi System.Reflection.Emit, sono disponibili interfacce di metadati non gestite, descritte nella documentazione di riferimento per le interfacce di metadati.In addition to the managed types in the System.Reflection.Emit namespace, there are unmanaged metadata interfaces which are described in the Metadata Interfaces reference documentation. 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.Managed reflection emit provides stronger semantic error checking and a higher level of abstraction of the metadata than the unmanaged metadata interfaces.

Un'altra risorsa per l'uso 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.Another useful resource for working with metadata and MSIL is the Common Language Infrastructure (CLI) documentation, especially "Partition II: Metadata Definition and Semantics" and "Partition III: CIL Instruction Set". La documentazione è disponibile online su MSDN e sul sito Web di ECMA.The documentation is available online on MSDN and at the Ecma Web site.

In questa sezioneIn This Section

Problemi di sicurezza nella reflection emitSecurity issues in reflection emit
Descrive i problemi di sicurezza relativi alla creazione di assembly dinamici mediante la reflection emit.Describes security issues related to creating dynamic assemblies using reflection emit.

Procedura: Definire ed eseguire metodi dinamici How to: Define and execute dynamic methods
Mostra come eseguire un metodo dinamico semplice e un metodo dinamico associato a un'istanza di una classe.Shows how to execute a simple dynamic method and a dynamic method bound to an instance of a class.

Procedura: Definire un tipo generico tramite reflection emit How to: Define a generic type with reflection emit
Illustra come creare un tipo generico semplice con due parametri di tipo, come applicare vincoli di classe, di interfaccia e speciali ai parametri di tipo e come creare membri che usano i parametri di tipo della classe come tipi di parametro o tipi restituiti.Shows how to create a simple generic type with two type parameters, how to apply class, interface, and special constraints to the type parameters, and how to create members that use the type parameters of the class as parameter types and return types.

Procedura: Definire un metodo generico tramite reflection emit How to: Define a generic method with reflection emit
Illustra le procedure di creazione, emit e richiamo di un metodo generico semplice.Shows how to create, emit, and invoke a simple generic method.

Assembly ritirabili per la generazione di tipi dinamici Collectible assemblies for dynamic type generation
Offre un'introduzione degli assembly ritirabili, ovvero assembly dinamici che possono essere scaricati senza scaricare il dominio dell'applicazione in cui sono stati creati.Introduces collectible assemblies, which are dynamic assemblies that can be unloaded without unloading the application domain in which they were created.

RiferimentiReference

OpCodes
Cataloga i codici di istruzioni MSIL che è possibile usare per compilare i corpi dei metodi.Catalogs the MSIL instruction codes you can use to build method bodies.

System.Reflection.Emit
Contiene le classi gestite usate per creare metodi, assembly e tipi dinamici.Contains managed classes used to emit dynamic methods, assemblies, and types.

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.Describes the Type class, which represents types in managed reflection and reflection emit, and which is key to the use of these technologies.

System.Reflection
Contiene le classi gestite usate per esaminare i metadati e il codice gestito.Contains managed classes used to explore metadata and managed code.

ReflectionReflection
Illustra come esaminare i metadati e il codice gestito.Explains how to explore metadata and managed code.

Assembly in Common Language RuntimeAssemblies in the Common Language Runtime
Fornisce una panoramica degli assembly nelle implementazioni .NET.Provides an overview of assemblies in .NET implementations.