Reflektion (C#)Reflection (C#)

Reflektion bietet Objekte (des Typs Type), die Assemblys, Module und Typen beschreiben.Reflection provides objects (of type Type) that describe assemblies, modules, and types. 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.You can use reflection to dynamically create an instance of a type, bind the type to an existing object, or get the type from an existing object and invoke its methods or access its fields and properties. Wenn Sie Attribute in Ihrem Code verwenden, können Sie mit Reflektion auf diese zugreifen.If you are using attributes in your code, reflection enables you to access them. Weitere Informationen finden Sie unter Attribute.For more information, see Attributes.

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:Here's a simple example of reflection using the GetType() method - inherited by all types from the Object base class - to obtain the type of a variable:

Hinweis

Stellen Sie sicher, dass Sie using System; und using System.Reflection; am Anfang Ihrer .cs-Datei hinzufügen.Make sure you add using System; and using System.Reflection; at the top of your .cs file.

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

Die Ausgabe ist: System.Int32.The output is: System.Int32.

Im folgenden Beispiel wird Reflektion verwendet, um den vollständigen Namen der geladenen Assembly abzurufen.The following example uses reflection to obtain the full name of the loaded assembly.

// 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.The output is: System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e.

Hinweis

Die C#-Schlüsselwörter protected und internal haben in IL keine Bedeutung und werden nicht in Reflektions-APIs verwendet.The C# keywords protected and internal have no meaning in IL and are not used in the reflection APIs. Die entsprechenden Begriffe in IL sind Family und Assembly.The corresponding terms in IL are Family and Assembly. Verwenden Sie zum Identifizieren einer internal-Methode mithilfe von Reflektion die Eigenschaft IsAssembly.To identify an internal method using reflection, use the IsAssembly property. Verwenden Sie IsFamilyOrAssembly zum Identifizieren einer Methode protected internal.To identify a protected internal method, use the IsFamilyOrAssembly.

Übersicht über ReflektionReflection overview

Reflektion ist in folgenden Situationen nützlich:Reflection is useful in the following situations:

Weitere Informationen finden Sie unter:For more information:

Weitere InformationenSee also