Émission d'assemblys et de méthodes dynamiquesEmitting Dynamic Methods and Assemblies

Cette section décrit un ensemble de types managés dans l'espace de noms System.Reflection.Emit, qui permettent à un compilateur ou à un outil d'émettre des métadonnées et du langage MSIL (Microsoft Intermediate Language) au moment de l'exécution et de générer éventuellement un fichier exécutable portable sur le disque.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. Les moteurs de script et les compilateurs sont les principaux utilisateurs de cet espace de noms.Script engines and compilers are the primary users of this namespace. Dans cette section, la fonctionnalité fournies par l'espace de noms System.Reflection.Emit est appelée émission de réflexion.In this section, the functionality provided by the System.Reflection.Emit namespace is referred to as reflection emit.

L'émission de réflexion offre les possibilités suivantes :Reflection emit provides the following capabilities:

  • Définir des méthodes globales légères au moment de l'exécution à l'aide de la classe DynamicMethod, et les exécuter à l'aide de délégués.Define lightweight global methods at run time, using the DynamicMethod class, and execute them using delegates.

  • Définir des assemblys au moment de l'exécution, puis les exécuter et/ou les enregistrer sur disque.Define assemblies at run time and then run them and/or save them to disk.

  • Définir des assemblys au moment de l'exécution, les exécuter, puis les décharger et autoriser le garbage collection à libérer leurs ressources.Define assemblies at run time, run them, and then unload them and allow garbage collection to reclaim their resources.

  • Définir des modules dans de nouveaux assemblys au moment de l'exécution, puis les exécuter et/ou les enregistrer sur disque.Define modules in new assemblies at run time and then run and/or save them to disk.

  • Définir des types dans des modules au moment de l'exécution, créer des instances de ces types et appeler leurs méthodes.Define types in modules at run time, create instances of these types, and invoke their methods.

  • Définir des informations symboliques pour des modules définis, qui peut être utilisées par des outils comme des débogueurs et des profileurs de code.Define symbolic information for defined modules that can be used by tools such as debuggers and code profilers.

En plus des types managés dans l’espace de noms System.Reflection.Emit, il existe des interfaces de métadonnées non managées qui sont décrites dans la documentation de référence Interfaces de métadonnées.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. L'émission de réflexion managée offre une vérification des erreurs sémantiques plus puissante et un niveau d'abstraction des métadonnées plus élevé que les interfaces de métadonnées non managées.Managed reflection emit provides stronger semantic error checking and a higher level of abstraction of the metadata than the unmanaged metadata interfaces.

Une autre ressource utile pour travailler avec les métadonnées et MSIL est la documentation de la Common Language Infrastructure (CLI), en particulier "Partie II : définition et sémantique des métadonnées" et "Partie III : jeu d'instructions de CIL".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 documentation est disponible en ligne sur MSDN et sur le site web Ecma.The documentation is available online on MSDN and at the Ecma Web site.

Dans cette sectionIn This Section

Problèmes de sécurité dans l’émission de réflexionSecurity issues in reflection emit
Décrit les problèmes de sécurité liés à la création d'assemblys dynamiques en utilisant l'émission de réflexion.Describes security issues related to creating dynamic assemblies using reflection emit.

Guide pratique pour définir et exécuter des méthodes dynamiques How to: Define and execute dynamic methods
Montre comment exécuter une méthode dynamique simple et une méthode dynamique liée à une instance d’une classe.Shows how to execute a simple dynamic method and a dynamic method bound to an instance of a class.

Guide pratique pour définir un type générique avec l’émission de réflexion How to: Define a generic type with reflection emit
Montre comment créer un type générique simple avec deux paramètres de type, comment appliquer des contraintes de classe, des contraintes d’interface et des contraintes spéciales aux paramètres de type, et comment créer des membres qui utilisent les paramètres de type de la classe comme types de paramètres et types de retour.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 memers that use the type parameters of the class as parameter types and return types.

Guide pratique pour définir une méthode générique avec l’émission de réflexion How to: Define a generic method with reflection emit
Montre comment créer, émettre et appeler une méthode générique simple.Shows how to create, emit, and invoke a simple generic method.

Assemblys pouvant être collectés pour la génération de type dynamique Collectible assemblies for dynamic type generation
Introduit les assemblys pouvant être collectés, qui sont des assemblys dynamiques qui peuvent être déchargés sans décharger le domaine d’application dans lequel ils ont été créés.Introduces collectible assemblies, which are dynamic assemblies that can be unloaded without unloading the application domain in which they were created.

RéférenceReference

OpCodes
Répertorie les codes des instructions MSIL que vous pouvez utiliser pour créer des corps de méthode.Catalogs the MSIL instruction codes you can use to build method bodies.

System.Reflection.Emit
Contient des classes managées utilisées pour émettre des méthodes, des assemblys et des types dynamiques.Contains managed classes used to emit dynamic methods, assemblies, and types.

Type
Décrit la classe Type, qui représente des types dans la réflexion managée et dans l'émission de réflexion, et qui est essentielle dans l'utilisation de ces technologies.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
Contient des classes managées utilisées pour explorer les métadonnées et le code managé.Contains managed classes used to explore metadata and managed code.

RéflexionReflection
Explique comment explorer les métadonnées et le code managé.Explains how to explore metadata and managed code.

Assemblys dans le Common Language RuntimeAssemblies in the Common Language Runtime
Fournit une vue d’ensemble des assemblys dans les implémentations de .NET.Provides an overview of assemblies in .NET implementations.