Laden...

Herausfinden ob Objekt eine Liste ist

Erstellt von sebingel vor 13 Jahren Letzter Beitrag vor 13 Jahren 808 Views
S
sebingel Themenstarter:in
21 Beiträge seit 2008
vor 13 Jahren
Herausfinden ob Objekt eine Liste ist

hallo,

ich arbeite zur zeit an einer server applikation die angemeldeten clients kommandos in form von XMLs schicken können soll.
der klasse die die XMLs erstellt wird dabei ein objekt der abstrakten kommando-klasse übergeben und anhand von reflections werden die nötigen infos aus dem objekt geholt.
in der regel werden den kommandos einfache datentypen wie string, int oder double etc. mitgegeben.
jetzt fand ich es allerdings nützlich, wenn ich einem kommando auch eine liste an string, int oder double etc. mitgeben kann... und da fängt mein problem auch schon an:

ich hole mir die infos aus dem kommando objekt anhand der im konstruktor übergebenen parameter. also für jeden parameter gibt es auch eine property über die ich den wert dann abfragen kann. jeder parameter kommt in ein KeyValuePair<string, object> (string = name des parameters und object der wert des parameters).
bei den bisher genutzten datentypen reichte es nun das object mittels ToString() methode in das xml zu schreiben, das funktioniert natürlich nicht, wenn ich eine liste übergebe.
an dieser stelle muss ich ja in irgendeiner weise prüfen, ob das object in dem keyvaluepair eine liste ist.
folgendes funktioniert da schonmal nicht:

if (keyValuePair.Value == typeof(List<>))

hat da jemand einen tip für mich, wie ich prüfen kann, ob das object eine liste ist?danke schonmal

3.430 Beiträge seit 2007
vor 13 Jahren
61 Beiträge seit 2009
vor 13 Jahren

Noch besser allerdings ist:


public static bool IsEnumerable(object obj)
{
     if(obj == null)
          return false;

     return obj is IEnumerable;
}

Damit deckt man so ziemlich alles ab: List, Array, Dictionary,...
Wenn man wirklich eine List<T> meint, dann hilft auch das so zu machen:


     return obj is IList;

Anschließend muss man nur noch umwandeln und auslesen.
Bei IEnumerable und IList sind die Elemente der Liste (oder was weiß ich) alle als Object gennant - auch hier ggf. casten.

In der Zeit vor fünf Minuten ist Jetzt die Zukunft. Jetzt ist die Gegenwart. Die Zeit, in der ich zu erzählen begonnen habe, ist die Vergangenheit von Jetzt und die Zukunft von der Gegenwart der Zeit, fünf Minuten bevor ich zu erzählen begann.

S
sebingel Themenstarter:in
21 Beiträge seit 2008
vor 13 Jahren

vielen dank euch beiden.

das hat mir wirklich sehr weiter geholfen.