Reflektion (C#)

Reflektion bietet Objekte (vom Typ <xref:System.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 statischen Methode GetType, die von allen Typen der Basisklasse Object geerbt wird, zum Abrufen von Typinformationen einer Variable:

// Using GetType to obtain type information:  
int i = 42;  
System.Type type = i.GetType();  
System.Console.WriteLine(type);  

Ausgabe:

System.Int32

Im folgenden Beispiel wird Reflektion verwendet, um den vollständigen Namen der geladenen Assembly abzurufen.

// Using Reflection to get information from an Assembly:  
System.Reflection.Assembly info = typeof(System.Int32).Assembly;  
System.Console.WriteLine(info);  

Ausgabe:

mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

Hinweis

Die C#-Schlüsselwörter protected und internal haben in IL keine Bedeutung und werden nicht in Reflektions-APIs verwendet. Die entsprechenden Begriffe in IL sind Family und Assembly. Verwenden Sie zum Identifizieren einer internal-Methode mithilfe von Reflektion die Eigenschaft <xref:System.Reflection.MethodBase.IsAssembly%2A>. Verwenden Sie <xref:System.Reflection.MethodBase.IsFamilyOrAssembly%2A> 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 <xref: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.

Weitere Informationen finden Sie unter:

Siehe auch

C#-Programmierhandbuch
Assemblys in der Common Language Runtime (CLR)