Heim >Backend-Entwicklung >C++ >Kann ich eine generische Klasse mit einem Typparameter aus einer Zeichenfolge instanziieren?
Ü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>();
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>
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); } }
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!