{"id":939,"date":"2016-02-09T07:18:49","date_gmt":"2016-02-09T05:18:49","guid":{"rendered":"http:\/\/www.holliesoft.de\/weblog\/?p=939"},"modified":"2016-03-30T20:00:22","modified_gmt":"2016-03-30T18:00:22","slug":"alle-eigenschaften-eines-objekts-ermitteln","status":"publish","type":"post","link":"https:\/\/www.holliesoft.de\/weblog\/2016\/02\/09\/alle-eigenschaften-eines-objekts-ermitteln\/","title":{"rendered":"Alle Eigenschaften eines Objekts ermitteln"},"content":{"rendered":"<p>Als ich wieder mal die ToString() Methode f\u00fcr ein Objekt \u00fcberladen habe, um die Eigenschaften eines Objekts sch\u00f6n formatiert auszugeben, habe ich mich gefragt, ob es vielleicht sinnvoller ist, die Eigenschaften \u00fcber Reflection zu suchen, statt die Eigenschaften manuell zusammenzuschreiben. Das hat den Vorteil, dass man keine Eigenschaft vergisst, wenn man das Objekt sp\u00e4ter mal erweitern sollte.<\/p>\n<p>Also habe ich Google um Rat gefragt und einer der ersten Suchtreffer war bei <a href=\"http:\/\/stackoverflow.com\/questions\/6773806\/getting-collection-of-all-members-of-a-class\">StackOverflow<\/a>,\u00a0seit einigen Jahren meine bevorzugte Quelle f\u00fcr Code-Snippets.<\/p>\n<p>Den dort vorgefundenen Code habe ich mal f\u00fcr ein Beispiel f\u00fcr den beschriebenen Anwendungsfall adaptiert:<\/p>\n<pre class=\"lang:c# decode:true \">internal class Person\r\n    {\r\n        string telefon;\r\n        public string Name { get; internal set; }\r\n        public string Plz { get; internal set; }\r\n        public string Stadt { get; internal set; }\r\n        public string Strasse { get; internal set; }\r\n        public string Vorname { get; internal set; }\r\n\r\n        public override string ToString()\r\n        {\r\n            StringBuilder data = new StringBuilder();\r\n            Type type = typeof(Person);\r\n            foreach (PropertyInfo prop in type.GetProperties())\r\n            {\r\n                data.AppendFormat(\"{0}:{1}\\n\", prop.Name, prop.GetValue(this));\r\n            }\r\n            return data.ToString();\r\n        }\r\n    }<\/pre>\n<p>Das Ergebnis sieht so aus:<\/p>\n<p>Name:Semmler<br \/>\nPlz:55435<br \/>\nStadt:Gau-Algesheim<br \/>\nStrasse:Rheinstra\u00dfe 40<br \/>\nVorname:Patrick<\/p>\n<fieldset style=\"font-size: 1em; max-width: 500px; border: solid thin black; border-radius: 10px; box-shadow: 5px 5px 5px silver; padding: 20px;\">\n<legend style=\"font-size: 12px; padding: 10px; box-shadow: 3px 3px 6px gray; border-radius: 10px; font-weight: bold; color: yellow; background-color: blue;\">Hinweis<br \/>\n<\/legend>\n<p>Die Methode <code>GetValue()<\/code> ben\u00f6tigt vor .Net 4.5 noch einen weiteren Parameter <code>Object[] index<\/code> , der bei nicht indizierten Properties null sein muss.<\/fieldset>\n","protected":false},"excerpt":{"rendered":"<p>Als ich wieder mal die ToString() Methode f\u00fcr ein Objekt \u00fcberladen habe, um die Eigenschaften eines Objekts sch\u00f6n formatiert auszugeben, habe ich mich gefragt, ob es vielleicht sinnvoller ist, die Eigenschaften \u00fcber Reflection zu suchen, statt die Eigenschaften manuell zusammenzuschreiben. Das hat den Vorteil, dass man keine Eigenschaft vergisst, wenn man das Objekt sp\u00e4ter mal [&#8230;]<\/p>\n<p><a class=\"btn btn-secondary understrap-read-more-link\" href=\"https:\/\/www.holliesoft.de\/weblog\/2016\/02\/09\/alle-eigenschaften-eines-objekts-ermitteln\/\">Weiterlesen\u00a0\u2026<span class=\"screen-reader-text\"> from Alle Eigenschaften eines Objekts ermitteln<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,41],"tags":[],"class_list":["post-939","post","type-post","status-publish","format-standard","hentry","category-net","category-c-net"],"_links":{"self":[{"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/posts\/939","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/comments?post=939"}],"version-history":[{"count":5,"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/posts\/939\/revisions"}],"predecessor-version":[{"id":943,"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/posts\/939\/revisions\/943"}],"wp:attachment":[{"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/media?parent=939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/categories?post=939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.holliesoft.de\/weblog\/wp-json\/wp\/v2\/tags?post=939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}