Ausgeben von dynamischen Methoden und AssemblysEmitting Dynamic Methods and Assemblies

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 Microsoft Intermediate Language (MSIL) ausgeben und optional eine übertragbare ausführbare Datei (PE-Datei) auf dem Datenträger generieren kann.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. Dieser Namespace wird primär von Skriptmodulen und Compilern verwendet.Script engines and compilers are the primary users of this namespace. Die vom System.Reflection.Emit-Namespace bereitgestellte Funktionalität wird in diesem Abschnitt als Reflektionsausgabe bezeichnet.In this section, the functionality provided by the System.Reflection.Emit namespace is referred to as reflection emit.

Die Reflektionsausgabe bietet die folgenden Funktionen:Reflection emit provides the following capabilities:

  • Sie können mithilfe der DynamicMethod-Klasse einfache globale Methoden zur Laufzeit definieren und diese mithilfe von Delegaten ausführen.Define lightweight global methods at run time, using the DynamicMethod class, and execute them using delegates.

  • Sie können Assemblys zur Laufzeit definieren und anschließend ausführen und/oder auf dem Datenträger speichern.Define assemblies at run time and then run them and/or save them to disk.

  • Sie können Assemblys zur Laufzeit definieren, sie ausführen und dann entladen und der Garbage Collection ermöglichen, die zugehörigen Ressourcen freizugeben.Define assemblies at run time, run them, and then unload them and allow garbage collection to reclaim their resources.

  • Sie können Module in neuen Assemblys zur Laufzeit definieren und anschließend ausführen und/oder auf dem Datenträger speichern.Define modules in new assemblies at run time and then run and/or save them to disk.

  • Sie können Typen in Modulen zur Laufzeit definieren, Instanzen dieser Typen erstellen und deren Methoden aufrufen.Define types in modules at run time, create instances of these types, and invoke their methods.

  • Sie können symbolische Informationen für definierte Module angeben, die von Tools wie Debuggern und Codeprofilern verwendet werden können.Define symbolic information for defined modules that can be used by tools such as debuggers and code profilers.

Neben den verwalteten Typen im System.Reflection.Emit-Namespace sind nicht verwaltete Metadatenschnittstellen verfügbar, die in der Referenzdokumentation zu Metadatenschnittstellen beschrieben werden.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. Die verwaltete Reflektionsausgabe bietet eine bessere semantische Fehlerüberprüfung und einen höheren Abstraktionsgrad für Metadaten als die nicht verwalteten Metadatenschnittstellen.Managed reflection emit provides stronger semantic error checking and a higher level of abstraction of the metadata than the unmanaged metadata interfaces.

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 MSIL.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". Die Dokumentation ist online auf MSDN und der Ecma-Website verfügbar.The documentation is available online on MSDN and at the Ecma Web site.

In diesem AbschnittIn This Section

Sicherheitsaspekte bei der ReflektionsausgabeSecurity issues in reflection emit
Beschreibt Sicherheitsaspekte im Zusammenhang mit dem Erstellen dynamischer Assemblys mithilfe der Reflektionsausgabe.Describes security issues related to creating dynamic assemblies using reflection emit.

Vorgehensweise: Definieren und Ausführen von dynamischen Methoden How to: Define and execute dynamic methods
Zeigt, wie eine einfache dynamische Methode sowie eine dynamische Methode, die an eine Instanz einer Klasse gebunden ist, ausgeführt werden.Shows how to execute a simple dynamic method and a dynamic method bound to an instance of a class.

Vorgehensweise: Definieren eines generischen Typs mit Reflektionsausgabe How to: Define a generic type with reflection emit
Zeigt, wie ein einfacher generischer Typ mit zwei Typparametern erstellt wird, wie Klasseneinschränkungen, Schnittstellen und bestimmte Einschränkungen für Typparameter angewandt werden und wie Member erstellt werden, die die Typparameter der Klasse als Parametertypen und Rückgabetypen verwenden.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.

Vorgehensweise: Definieren einer generischen Methode mit Reflektionsausgabe How to: Define a generic method with reflection emit
Zeigt, wie einfache generische Methoden erstellt, ausgegeben und aufgerufen werden.Shows how to create, emit, and invoke a simple generic method.

Entladbare Assemblys für die dynamische Typgenerierung Collectible assemblies for dynamic type generation
Führt in das Thema „entladbare Assemblys“ ein. Dabei handelt es sich um dynamische Assemblys, die entladen werden können, ohne gleichzeitig auch die Anwendungsdomäne zu entladen, in der sie erstellt wurden.Introduces collectible assemblies, which are dynamic assemblies that can be unloaded without unloading the application domain in which they were created.

VerweisReference

OpCodes
Hier werden die MSIL-Anweisungcodes zum Erstellen von Methodentexten katalogisiert.Catalogs the MSIL instruction codes you can use to build method bodies.

System.Reflection.Emit
Hier werden verwaltete Klassen aufgeführt, die zum Ausgeben von dynamischen Methoden, Assemblys und Typen verwendet werden.Contains managed classes used to emit dynamic methods, assemblies, and types.

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.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
Hier werden verwaltete Klassen aufgeführt, die zum Durchsuchen von Metadaten und verwaltetem Code verwendet werden.Contains managed classes used to explore metadata and managed code.

ReflektionReflection
Erläutert das Durchsuchen von Metadaten und verwaltetem Code.Explains how to explore metadata and managed code.

Assemblys in der Common Language Runtime (CLR)Assemblies in the Common Language Runtime
Bietet eine Übersicht über Assemblys in .NET-Implementierungen.Provides an overview of assemblies in .NET implementations.