Heim > Backend-Entwicklung > C++ > Kann ich eine generische Klasse mit einem Typparameter aus einer Zeichenfolge instanziieren?

Kann ich eine generische Klasse mit einem Typparameter aus einer Zeichenfolge instanziieren?

DDD
Freigeben: 2025-02-01 12:26:14
Original
170 Leute haben es durchsucht

Can I Instantiate a Generic Class with a Type Parameter from a String?

Übergeben Sie ein instanziiertes System. Generische Klasse mit einem spezifischen Typparameter, der aus einer String -Darstellung des Typnamens erhalten wurde. Mit anderen Worten, kann man das folgende Szenario konstruieren:

wobei myGenericclass als

string typeName = <read type name from somewhere>;
Type myType = Type.GetType(typeName);

MyGenericClass<myType> myGenericClass = new MyGenericClass<myType>();
Nach dem Login kopieren

definiert ist. konnte nicht gefunden werden '". Um dies zu überwinden, kann die Reflexion genutzt werden. Nachfolgend ist ein voll funktionsfähiges Beispiel:

public class MyGenericClass<T>
Nach dem Login kopieren

Alternativ ist es entscheidend, die Kommas anzugeben, wenn die generische Klasse mehrere Typparameter akzeptiert, wenn die Typ -Namen weggelassen werden. Zum Beispiel:

using System;
using System.Reflection;

public class Generic<T>
{
    public Generic()
    {
        Console.WriteLine("T={0}", typeof(T));
    }
}

class Test
{
    static void Main()
    {
        string typeName = "System.String";
        Type typeArgument = Type.GetType(typeName);

        Type genericClass = typeof(Generic<>);
        // MakeGenericType is badly named
        Type constructedClass = genericClass.MakeGenericType(typeArgument);

        object created = Activator.CreateInstance(constructedClass);
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonKann ich eine generische Klasse mit einem Typparameter aus einer Zeichenfolge instanziieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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