Reflektion (C#)
Reflektion bietet Objekte (des Typs Type), die Assemblys, Module und Typen beschreiben. Mithilfe von Reflektion können Sie dynamisch eine Instanz eines Typs erzeugen, den Typ an ein vorhandenes Objekt binden und Typinformationen von vorhandenen Objekten abfragen. Ebenso wird erläutert wie die Methoden vorhandener Objekte aufgerufen und auf ihre Felder und Eigenschaften zugegriffen werden kann. Wenn Sie Attribute in Ihrem Code verwenden, können Sie mit Reflektion auf diese zugreifen. Weitere Informationen finden Sie unter Attribute.
Hier sehen Sie ein einfaches Beispiel für Reflektion mit der Methode GetType(), die von allen Typen der Basisklasse Object
geerbt wird, zum Abrufen von Typinformationen einer Variable:
Hinweis
Stellen Sie sicher, dass Sie using System;
und using System.Reflection;
am Anfang Ihrer .cs-Datei hinzufügen.
// Using GetType to obtain type information:
int i = 42;
Type type = i.GetType();
Console.WriteLine(type);
Die Ausgabe ist: System.Int32
.
Im folgenden Beispiel wird Reflektion verwendet, um den vollständigen Namen der geladenen Assembly abzurufen.
// Using Reflection to get information of an Assembly:
Assembly info = typeof(int).Assembly;
Console.WriteLine(info);
Die Ausgabe ist: System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e
.
Hinweis
Die C#-Schlüsselwörter protected
und internal
haben in Zwischensprache (Intermediate Language, IL) keine Bedeutung und werden nicht in Reflexions-APIs verwendet. Die entsprechenden Begriffe in IL sind Family und Assembly. Verwenden Sie zum Identifizieren einer internal
-Methode mithilfe von Reflektion die Eigenschaft IsAssembly. Verwenden Sie IsFamilyOrAssembly zum Identifizieren einer Methode protected internal
.
Übersicht über Reflektion
Reflektion ist in folgenden Situationen nützlich:
- Wenn Sie in den Metadaten Ihres Programms auf Attribute zugreifen müssen Weitere Informationen finden Sie unter Abrufen von Informationen aus Attributen.
- Zum Untersuchen und Instanziieren von Typen in einer Assembly
- Zum Erstellen neuer Typen zur Laufzeit Verwenden Sie Klassen in System.Reflection.Emit.
- Zum Ausführen von spätem Binden mit Zugriff auf Methoden der zur Laufzeit erstellten Typen Weitere Informationen finden Sie im Thema Dynamisches Laden und Verwenden von Typen.
Verwandte Abschnitte
Weitere Informationen finden Sie unter:
- Reflexion
- Anzeigen von Typinformationen
- Reflektion und generische Typen
- System.Reflection.Emit
- Abrufen von Informationen aus Attributen