Envoyer des assemblys et des méthodes dynamiques

Cette section décrit un ensemble de types gérés dans l’espace de noms System.Reflection.Emit qui permettent à un compilateur ou à un outil d’émettre des métadonnées et un langage intermédiaire commun (CIL) au moment de l’exécution et, éventuellement, de générer un fichier exécutable portable (PE) 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 CIL 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.

Référence

OpCodes
Répertorie les codes des instructions CIL que vous pouvez utiliser pour créer des corps de méthode.

System.Reflection.Emit
Contient des 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 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.

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