Veröffentlicht 27. Dezember 201014 j Hallo. Wie kann ich einen generischen Typparameter zur Laufzeit übergeben? z.B. string s = ""; Type t = s.GetType(); List<t> l = new List<t>(); Oder vllt wisst ihr was besseres: Ich habe ein DataRowArray und möchte das via Linq per Benuzedialog (Spalte und Sortierrichtung) sortieren lassen: var sortedItems = from item in items orderby item.DataRow.Field<t>(e.SortColumn) descending select item; Das Problem ist, ich muss dem übergeben welcher Typ diese Spalte ist. Danke!!!
27. Dezember 201014 j Im Zweifel: public void MyMethod<GenericParameter>() { string s = ""; Type t = s.GetType(); List<GenericParameter> l = new List<GenericParameter>(); } Ansonsten kann man generische Datentypen per Reflection erstellen. Siehe How to: Examine and Instantiate Generic Types with Reflection
27. Dezember 201014 j Autor public void MyMethod<GenericParameter>() { string s = ""; Type t = s.GetType(); List<GenericParameter> l = new List<GenericParameter>(); } Das Problem wieder hierbei, Ich übergebe MyMethod einen Generischen Paramater. Da kann ich nicht den Paramater zur Laufzeit übergeben. Das muss im Kompiler festgelegt sein, dass entweder int, string, etc. gesetzt wird. Ich seh das ungefähir so Type t = // Ich ermittel hier anhand eines Strings einen Datentyp List<t> l = new List<t>(); ---------------- Code in der Theorie!! So SOLLTE es sein. In der praxis funktioniert das nicht [/code] Dieser Datentyp kann zur laufzeit mal String, mal int, mal DateTime sein. Ich weiss es nicht. P.S. Danke für die MSDN Seite, jedoch hat die mir nicht weitergeholfen Gruß
6. Januar 201114 j Moin, wenn ich dich richtig verstehe ist es doch nichts weiter wie das: public void blubb<T>() { List<T> x = new List<T>(); } Dann rufst du die Funktion einfach auf mit: blubb<int>(); blubb<string>(); --> dazu würd ich den Objekttyp per reflexion übergeben.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.