Ausgeben von dynamischen Methoden und Assemblys
In diesem Abschnitt wird ein Satz verwalteter Typen im System.Reflection.Emit-Namespace beschrieben, mit denen ein Compiler oder ein Tool zur Laufzeit Metadaten und Common Intermediate Language (CIL) ausgeben und optional eine übertragbare ausführbare Datei (PE-Datei) auf dem Datenträger generieren kann. Dieser Namespace wird primär von Skript-Engines und Compilern verwendet. Die vom System.Reflection.Emit-Namespace bereitgestellte Funktionalität wird in diesem Abschnitt als Reflexionsausgabe bezeichnet.
Die Reflektionsausgabe bietet die folgenden Funktionen:
- Sie können mithilfe der DynamicMethod-Klasse einfache globale Methoden zur Laufzeit definieren und diese mithilfe von Delegaten ausführen.
- Sie können Assemblys zur Laufzeit definieren und anschließend ausführen und/oder auf dem Datenträger speichern.
- Sie können Assemblys zur Laufzeit definieren, sie ausführen und dann entladen und der Garbage Collection ermöglichen, die zugehörigen Ressourcen freizugeben.
- Sie können Module in neuen Assemblys zur Laufzeit definieren und anschließend ausführen und/oder auf dem Datenträger speichern.
- Sie können Typen in Modulen zur Laufzeit definieren, Instanzen dieser Typen erstellen und deren Methoden aufrufen.
- Sie können symbolische Informationen für definierte Module angeben, die von Tools wie Debuggern und Codeprofilern verwendet werden können.
Neben den verwalteten Typen im System.Reflection.Emit-Namespace sind nicht verwaltete Metadatenschnittstellen verfügbar, die in der Referenzdokumentation zu Metadatenschnittstellen beschrieben werden. Die verwaltete Reflektionsausgabe bietet eine bessere semantische Fehlerüberprüfung und einen höheren Abstraktionsgrad für Metadaten als die nicht verwalteten Metadatenschnittstellen.
In der Common Language Infrastructure(CLI)-Dokumentation, insbesondere in den Themen „Partition II: Metadata Definition and Semantics“ und „Partition III: CIL Instruction Set“ finden Sie weitere hilfreiche Informationen zur Verwendung von Metadaten und CIL. Die Dokumentation ist online auf der Ecma-Website verfügbar.
Verweis
OpCodes
Hier werden die CIL-Anweisungcodes zum Erstellen von Methodentexten katalogisiert.
System.Reflection.Emit
Hier werden verwaltete Klassen aufgeführt, die zum Ausgeben von dynamischen Methoden, Assemblys und Typen verwendet werden.
Type
Hier wird die Type-Klasse beschrieben, die Typen in der verwalteten Reflektion und Reflektionsausgabe darstellt. Diese Klasse ist das wichtigste Element bei der Verwendung dieser Technologien.
System.Reflection
Hier werden verwaltete Klassen aufgeführt, die zum Durchsuchen von Metadaten und verwaltetem Code verwendet werden.