errox Geschrieben 27. Dezember 2010 Geschrieben 27. Dezember 2010 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!!! Zitieren
NerdonRails Geschrieben 27. Dezember 2010 Geschrieben 27. Dezember 2010 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 Zitieren
errox Geschrieben 27. Dezember 2010 Autor Geschrieben 27. Dezember 2010 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ß Zitieren
kevinka Geschrieben 6. Januar 2011 Geschrieben 6. Januar 2011 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.