Dynamischer Klassenzugriff in C# mit Reflection
C#-Entwickler stoßen häufig auf Szenarien, die einen dynamischen Klassenzugriff basierend auf String-Darstellungen erfordern. In diesem Artikel wird gezeigt, wie Sie Reflektion nutzen können, um Klassenreferenzen aus Zeichenfolgen abzurufen.
Stellen Sie sich vor, Sie haben eine Zeichenfolge („MyClass“), die einen Klassennamen darstellt, und Sie müssen eine Methode innerhalb dieser Klasse aufrufen. Reflexion liefert die Lösung.
Die Kernfunktionalität basiert auf der Type.GetType
-Methode. Hier ist ein Beispiel:
<code class="language-csharp">using System; using System.Reflection; public class Example { public static void Main(string[] args) { Type type = Type.GetType("MyClass"); // Get the Type object MethodInfo method = type.GetMethod("MyMethod", BindingFlags.Public | BindingFlags.Static); // Get the method method.Invoke(null, null); // Invoke the method } } public class MyClass { public static void MyMethod() { Console.WriteLine("MyMethod called!"); } }</code>
Dieser Code verwendet Type.GetType
, um ein Type
-Objekt aus der Zeichenfolge abzurufen. GetMethod
ruft dann die angegebene statische Methode ab und Invoke
führt sie aus.
Beachten Sie, dass in diesem Beispiel eine öffentliche statische Methode verwendet wird. Das Anpassen von BindingFlags
ermöglicht den Zugriff auf andere Methodentypen (z. B. BindingFlags.Instance | BindingFlags.NonPublic
für private Instanzmethoden).
Das Verständnis Type.GetType
und anderer Reflexionsmethoden ermöglicht die dynamische Interaktion mit Ihren C#-Klassen und bietet erhebliche Flexibilität in Ihren Anwendungen.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection C#-Klassenreferenzen aus Strings abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!