Erstellen Sie ein Objekt der Generischen Klasse mit dynamisch generierten Typ
Habe ich eine generische Klasse
public class MyClass<T>
{
public List<T> Translate(List<T> list, params string[] names)
{
//do something here,modify list and return list
}
}
Nun ich kann einfach erstellen Sie Ihre Instanzen wie
MyClass<Employee> obj= new MyClass<Employee>(); OR
MyClass<Vehicle> obj = new MyClass<Vehicle>();
Ich anrufen kann meine Methode wie
obj.Translate(Mylist of employee or vehicle type,"param1","param2")
Aber in meinem Fall weiß ich nicht den Typ T als erzeugt zur Laufzeit,finden Sie den code unten
String classname = string.Empty;
if(Classtype == 1)
{
classname = "Employee"
}
else if(classtype == 2)
{
classname = "Vehicle"
}
Möchte ich sowas wie unten..damit kann ich creat eine Instanz der generischen Klasse
MyClass<typeof(classname)> empp = new MyClass<typeof(classname)>();
empp.Translate(MyList,"param1","param2")
Bitte vorschlagen,wie kann ich das tun.
- Ist es eigentlich sinnvoll Sie zu haben
T
, oder benötigen Sie nur die LaufzeitType
? - möglich, Duplikat der Wie dynamisch erstellen von generischen C# - Objekt mit Reflexion?
- Nun möchte ich nennen, meine generische Klasse ist die Methode, Wie kann ich etwas tun, wie Instanz.Mymethod(Parameter);
- Nun möchte ich nennen, meine generische Klasse ist die Methode, Wie kann ich etwas tun, wie Instanz.Mymethod(Parameter);
- Ich glaube, Sie sollten auch beschreiben, wie Sie sind, soll die Verwendung des generischen Typs in Ihre Zukunft code.
- ich habe bearbeitet den code.. bitte haben Sie einen Blick
- Nun, könnten Sie ein paar details über die
Translate
Methode? Vielleicht beschreiben, was es tut?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
Beachten Sie, dass Typ.GetType(...) funktioniert nur mit dem vollen namespace einer Art, oder sogar die volle assembly qualifizierten Namen, wenn Sie Ihre Klasse nicht in der gleichen dll als der code, der ausgeführt wird dies.
Reflection
? Dies ist nicht wirklich eine perfekte Lösung.Type.GetType(className)
?Reflection
.Danke an Alle für die Hilfe, ich war in der Lage, es zu tun auf diese Weise
ishan
Nennen es: