Heim > Backend-Entwicklung > C++ > Wie kann ich Reflexion verwenden, um generische Methoden mit dynamischen Typparametern aufzurufen?

Wie kann ich Reflexion verwenden, um generische Methoden mit dynamischen Typparametern aufzurufen?

DDD
Freigeben: 2025-02-03 07:57:13
Original
206 Leute haben es durchsucht

How to Use Reflection to Invoke Generic Methods with Dynamic Type Parameters?

Verwenden von Reflex -Dynamik, das die generische Methode

aufruft Da die Typparameter beim Kompilieren nicht bekannt sind, muss die dynamische Aufrufmethode reflektiert werden. Um dieses Ziel zu erreichen, führen Sie die folgenden Schritte aus:

rufen Sie die Instanz -Generikum -Methode auf

Holen Sie sich die Art der Scrang -Methode -Deklarationsklasse.

    methodInfo mit Reflex -Abrufinstanzmethode.
  1. Verwenden Sie die vom MakeGegnericMethod angegebenen Typparameter, um die generische Methode zu konstruieren.
  2. verwenden Sie Invoke, um die generische Methode auf der Instanz aufzurufen.
  3. rufen Sie die statische generische Methode auf
<code class="language-csharp">Type myType = FindType(typeName);
MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);</code>
Nach dem Login kopieren

methodInfo unter Verwendung der statischen Reflexionsmethode.

Verwenden Sie die vom MakeGegnericMethod angegebenen Typparameter, um die generische Methode zu konstruieren.
  1. verwenden Sie Invoke, um die statische generische Methode aufzurufen.
  2. Bitte beachten Sie, dass für die statische Methode der Null als erster Parameter übergeben wird.
Andere Vorsichtsmaßnahmen
<code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.StaticMethod));
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(null, null);</code>
Nach dem Login kopieren

Für C# 4 und höhere Versionen kann die Verwendung dynamischer Typen diesen Prozess vereinfachen, insbesondere wenn Typs schließt. In einigen Arten von Schlussfolgerungen (wie den vorgesehenen Beispielen) können jedoch noch Reflexe erforderlich sein.

Das obige ist der detaillierte Inhalt vonWie kann ich Reflexion verwenden, um generische Methoden mit dynamischen Typparametern aufzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage