Émission d'assemblys et de méthodes dynamiques

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. Les moteurs de script et les compilateurs sont les principaux utilisateurs de cet espace de noms. Dans cette section, la fonctionnalité fournies par l'espace de noms System.Reflection.Emit est appelée émission de réflexion.

L'émission de réflexion offre les possibilités suivantes :

  • 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.

  • Définir des assemblys au moment de l'exécution, puis les exécuter et/ou les enregistrer sur disque.

  • 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.

  • Définir des modules dans de nouveaux assemblys au moment de l'exécution, puis les exécuter et/ou les enregistrer sur disque.

  • 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.

  • 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.

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. 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.

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". La documentation est disponible en ligne sur le site web Ecma.

Dans cette section

Problèmes de sécurité dans l’émission de réflexion Décrit les problèmes de sécurité liés à la création d’assemblys dynamiques à l’aide de l’émission de réflexion.

Comment : Définir et exécuter des méthodes dynamiques Montre comment exécuter une méthode dynamique simple et une méthode dynamique liée à une instance d’une classe.

Comment : Définir un type générique avec l'émission de réflexion 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.

Comment : Définir une méthode générique avec émission de réflexion Montre comment créer, émettre et appeler une méthode générique simple.

Assemblages pouvant être collectés pour la génération de type dynamique Introduit des assemblages pouvant être collectés, qui sont des assemblages dynamiques qui peuvent être déchargés sans décharger le domaine d’application dans lequel ils ont été créés.

Référence

OpCodes Répertorie les codes d’instructions MSIL qui vous permettent de créer des corps de méthodes.

System.Reflection.Emit Contient les classes managées utilisées pour émettre des méthodes, des assemblys et des types dynamiques.

Type Décrit la classe Type, qui représente les types dans la réflexion managée et l’émission de réflexion, et qui est essentielle dans l’utilisation de ces technologies.

System.Reflection Contient les classes managées utilisées pour explorer les métadonnées et le code managé.

Réflexion Explique comment explorer les métadonnées et le code managé.

Assemblys dans .NET Fournit une vue d’ensemble des assemblys dans les implémentations de .NET.