Freigeben über


Reflektion (C# und Visual Basic)

Bei der Reflektion werden Objekte (vom Typ Type) bereitgestellt, die Assemblys, Module und Typen beschreiben. Mithilfe von Reflektion können Instanzen von Typen dynamisch erzeugt, Typen an ein vorhandenes Objekt gebunden und Typinformationen von vorhandenen Objekten abgefragt werden. Ebenso können die Methoden vorhandener Objekte aufgerufen werden, und es kann auf ihre Felder und Eigenschaften zugegriffen werden. Wenn Sie Attribute im Code verwenden, können Sie mithilfe von Reflektion auf diese Attribute zugreifen. Weitere Informationen finden Sie unter Erweitern von Metadaten mithilfe von Attributen.

Das folgende einfache Beispiel veranschaulicht die Verwendung der statischen Methode GetType – die alle Typen aus der Object-Basisklasse geerbt haben – zum Abrufen des Typs einer Variablen:

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

Die Ausgabe lautet:

System.Int32

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

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

Die Ausgabe lautet:

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

Tipp

Die C#-Schlüsselwörter protected und internal besitzen in IL keine Bedeutung und werden in den Reflektions-APIs nicht verwendet. Die entsprechenden Begriffe in IL sind Family und Assembly. Um per Reflektion eine internal-Methode zu bezeichnen, verwenden Sie die IsAssembly-Eigenschaft. Zur Identifizierung einer protected internal-Methode verwenden Sie IsFamilyOrAssembly.

Übersicht über Reflektion

Reflektion ist in folgenden Situationen nützlich:

  • Wenn Sie auf Attribute in den Metadaten des Programms zugreifen müssen. Weitere Informationen finden Sie unter Abrufen von Informationen aus Attributen.

  • Für das Überprüfen und das Instanziieren von Typen in einer Assembly.

  • Für das Erstellen neuer Typen zur Laufzeit. Verwenden Sie die Klassen in System.Reflection.Emit.

  • Für das Ausführen von spätem Binden und für den Zugriff auf Methoden von zur Laufzeit erstellten Typen. Weitere Informationen finden Sie unter Dynamisches Laden und Verwenden von Typen.

Verwandte Abschnitte

Weitere Informationen:

Siehe auch

Referenz

Anwendungsdomänen (C# und Visual Basic)

Konzepte

C#-Programmierhandbuch

Assemblys in der Common Language Runtime (CLR)

Weitere Ressourcen

Visual Basic-Programmierhandbuch