Hallo zusammen,
Ich bin auf der Suche nach einer Möglichkeit um verschachtelte Objekte auszulesen.
Mit Refelction und GetProperty(), dachte ich, dass das kein großes Problem ist.
Interessant wird das ganze jedoch, wenn ein Objekt (User) eine Liste (Gruppen) enthält, die wiederrum eine Liste (Items) enthält.
Beispiel:
User:
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Group> Groups { get; set; }
Gruppe:
public string Name { get; set; }
public List<SecurityItem> Items { get; set; }
Das Ganze könnte man natürlich mit Schleifen machen, aber es gibt doch bestimmt noch einen schöneren Ansatz?
Vielen Dank,
Manullino
Hallo manullino,
das ganze wird natürlich über eine Schleife gelöst.
Man iteriert durch alle Properties und prüft deren Typen oder direkt das geparste object:
public static bool IsArray(Type t)
{
return t.IsArray;
}
public static bool IsIList(Object o)
{
return o is IList;
}
Wenn es sich um eine Array oder eine Liste handelt, ruft man erneut eine Schleife auf, die wiederum alle Properties dessen Typs durchläuft. Optimaler Weise macht man das nun Rekursiv, so dass Du die selbe Funktion wiederverwenden kannst.
Am besten schaust Du Dir mal an wie ein Serializer das macht. Dort findest Du massenweise Lösungen.
z.B. Simple JSON
Die Funktion GetFieldOrPropertyValue
wäre dort von Interesse.
Gruß,
trib