Laden...

Reflection - verschachtelte Objekte auslesen

Erstellt von manullino vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.312 Views
manullino Themenstarter:in
371 Beiträge seit 2008
vor 9 Jahren
Reflection - verschachtelte Objekte auslesen

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

T
708 Beiträge seit 2008
vor 9 Jahren

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