Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von Reflection eine Klassenreferenz aus einem String in C# abrufen?

Wie kann ich mithilfe von Reflection eine Klassenreferenz aus einem String in C# abrufen?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-14 10:04:44168Durchsuche

How Can I Get a Class Reference from a String in C# Using Reflection?

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():

auf
<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.

finden Sie in der MSDN-Dokumentation

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn