Heim >Backend-Entwicklung >C++ >Wie rufe ich generische Methoden mit dynamischen Typparametern in C#auf?

Wie rufe ich generische Methoden mit dynamischen Typparametern in C#auf?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-02-03 07:55:09632Durchsuche

How to Call Generic Methods with Dynamic Type Parameters in C#?

Rufen Sie die generische Methode auf, wenn die Typparameter beim Ausführen ermittelt werden

Viele Anwendungsarten werden vor dem unbekannten Typ vor der Laufzeit verarbeitet. In diesem Fall ist die Verwendung dynamisch erhaltener Typparameter zum Aufrufen der generischen Methode sehr wichtig. In diesem Artikel wird die beste Praxis erörtert, um diese Aufgabe zu erreichen. unter der Annahme der folgenden Szene: In der

-Methode müssen wir

die generische Methode

in der

Variablen Example() verwenden. Die Methode zum direkten Aufrufen von myType ist nicht machbar. Type GenericMethod<T>() Um die generische Methode mit dynamischen Typparametern aufzurufen, verwenden wir Reflexion. Zunächst verwenden wir die Metadaten für die -Anfassungsmethode. Anschließend verwenden wir die generische Methode GenericMethod<myType>(), indem wir geeignete Typparameter bereitstellen. Schließlich verwenden wir die die generische Methode.

GetMethod() Wenn die generische Methode statisch ist, übergeben wir MakeGenericMethod() als erster Parameter an Invoke(). Dieser Schritt hat nichts mit generischen Methoden zu tun, was eine allgemeine Reflexionspraxis ist.

<code class="language-csharp">MethodInfo method = typeof(Sample).GetMethod(nameof(Sample.GenericMethod));
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);</code>
c# 4 führte die "dynamische" Typinferenz ein, die diesen Prozess in bestimmten Szenen vereinfacht. Wenn jedoch nicht verfügbar ist, ist es immer noch nützlich, die Reflexion zu verstehen.

Das obige ist der detaillierte Inhalt vonWie rufe ich generische Methoden mit dynamischen Typparametern in C#auf?. 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