Heim > Backend-Entwicklung > C++ > Wie kann ich zur Laufzeit dynamisch eine generische Typinstanz erstellen?

Wie kann ich zur Laufzeit dynamisch eine generische Typinstanz erstellen?

Patricia Arquette
Freigeben: 2025-01-13 07:17:42
Original
216 Leute haben es durchsucht

How Can I Dynamically Create a Generic Type Instance at Runtime?

Erstellen Sie zur Laufzeit dynamisch Instanzen generischer Typen

In manchen Fällen kann es notwendig sein, Instanzen eines generischen Typs dynamisch zu erstellen, basierend auf einem zur Laufzeit bestimmten Typ. Dies kann eine Herausforderung sein, da generische Typen normalerweise zur Kompilierungszeit definiert werden.

Eine Möglichkeit, dies zu erreichen, besteht darin, Reflexion zu nutzen. Hier ist eine Problemumgehung, mit der Sie eine generische Typinstanz mithilfe einer Variablen erstellen können, die den Zieltyp enthält:

<code class="language-csharp">Type k = typeof(double);
Type genericListType = typeof(List<>); // 注意这里<>
var specificListType = genericListType.MakeGenericType(k);
var list = Activator.CreateInstance(specificListType);</code>
Nach dem Login kopieren
Die

MakeGenericType-Methode akzeptiert einen einzelnen Type-Parameter und gibt ein neues Type-Objekt zurück, das einen generischen Typ mit dem angegebenen Typparameter darstellt. In diesem Fall übergeben wir double von Type, um den Zieltyp anzugeben.

Nachdem wir den spezifischen generischen Typ erhalten haben, können wir die Methode Activator.CreateInstance verwenden, um ein Objekt dieses Typs zu instanziieren. Diese Methode verwendet Reflektion, um dynamisch eine neue Instanz des angegebenen Objekttyps zu erstellen.

Mit diesem Ansatz können Sie dynamisch Instanzen generischer Typen basierend auf zur Laufzeit ermittelten Typen erstellen, was eine größere Flexibilität und Codeanpassungsfähigkeit ermöglicht. Beachten Sie, dass typeof(List) in typeof(List<>) geändert werden muss, um den generischen Typ List<T> korrekt darzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ich zur Laufzeit dynamisch eine generische Typinstanz erstellen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage