Alle Eigenschaften eines Objekts ermitteln

Als ich wieder mal die ToString() Methode für ein Objekt überladen habe, um die Eigenschaften eines Objekts schön formatiert auszugeben, habe ich mich gefragt, ob es vielleicht sinnvoller ist, die Eigenschaften über Reflection zu suchen, statt die Eigenschaften manuell zusammenzuschreiben. Das hat den Vorteil, dass man keine Eigenschaft vergisst, wenn man das Objekt später mal erweitern sollte.

Also habe ich Google um Rat gefragt und einer der ersten Suchtreffer war bei StackOverflow, seit einigen Jahren meine bevorzugte Quelle für Code-Snippets.

Den dort vorgefundenen Code habe ich mal für ein Beispiel für den beschriebenen Anwendungsfall adaptiert:

Das Ergebnis sieht so aus:

Name:Semmler
Plz:55435
Stadt:Gau-Algesheim
Strasse:Rheinstraße 40
Vorname:Patrick

Hinweis

Die Methode GetValue() benötigt vor .Net 4.5 noch einen weiteren Parameter Object[] index , der bei nicht indizierten Properties null sein muss.