Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Reflection eine Klassenreferenz aus einem String in C# abrufen?
Verwenden von Reflection zum Abrufen von C#-Klassenreferenzen aus Strings
C#-Reflexion bietet einen leistungsstarken Mechanismus für den dynamischen Zugriff auf und die Bearbeitung von Laufzeittypinformationen. Dazu gehört das Abrufen einer Klassenreferenz nur unter Verwendung ihrer Zeichenfolgendarstellung.
Der Prozess:
Die Kernmethode für diese Aufgabe ist Type.GetType()
. Diese Methode akzeptiert eine Zeichenfolge, die den vollständig qualifizierten Typnamen enthält, und gibt ein Type
-Objekt zurück, das diesen Typ darstellt.
Beispiel:
Angenommen, Sie haben eine Klasse mit dem Namen FooClass
. So erhalten Sie sein Type
-Objekt:
<code class="language-csharp">string className = "FooClass"; Type type = Type.GetType(className);</code>
Um auf eine statische Methode innerhalb von FooClass
zuzugreifen (z. B. MyMethod
), verwenden Sie GetMethod()
:
<code class="language-csharp">MethodInfo method = type.GetMethod("MyMethod", BindingFlags.Static | BindingFlags.Public);</code>
Zum Schluss rufen Sie die Methode mit Invoke()
:
<code class="language-csharp">method.Invoke(null, null); // null for static methods, null for no parameters</code>
Denken Sie daran, dass null
als erstes Argument für statische Methoden verwendet wird (keine Instanz erforderlich) und das zweite Argument ein Array von Parametern ist (null, wenn die Methode keine Parameter akzeptiert).
Umgang mit externen Baugruppen:
Im obigen Beispiel wird davon ausgegangen, dass sich FooClass
innerhalb derselben Assembly befindet. Für Typen, die sich in verschiedenen Assemblys befinden, müssen Sie den Namen der Assembly als Teil des vollständig qualifizierten Typnamens angeben. Das genaue Format hängt vom Standort der Baugruppe ab. Ausführliche Anleitungen zum Angeben von Assemblynamen innerhalb der Type.GetType()
-Methode.
Weitere Erkundung:
Weitere Informationen zur C#-Reflexion finden Sie in der offiziellen Microsoft-Dokumentation zu Type.GetType()
, MethodInfo.GetMethod()
und MethodInfo.Invoke()
. Diese Ressourcen bieten umfassende Details und erweiterte Nutzungsszenarien.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection eine Klassenreferenz aus einem String in C# abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!