Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Generischer Typparameter zur Laufzeit übergeben

Empfohlene Antworten

Veröffentlicht

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!!!

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

  • 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ß

  • 2 Wochen später...

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.