c# - Finding all properties and subproperties of an object -


sometimes want know if object has property looking object has lot of properties , may take time find debugging it. nice if write function find properties , values in a string can paste string in notepad instance , value looking find feature notepad has. far have this:

public void getallpropertiesandsubproperties(system.reflection.propertyinfo[] properties)         {             foreach (var in properties)             {                 //messagebox.show(a.tostring());                 // here test if property 1                  // looking                 system.reflection.propertyinfo[] temp = a.gettype().getproperties();                 // if property has properties call function again                 if (temp.length > 0) getallpropertiesandsubproperties(temp);             }         } 

editing question have worked:

so far have added following code. can pass whatever object want following method , can see properties. having trouble viewing values of properties

![public void stackoverex(dynamic obj) {     // string apending properties     string stringproperties = "";      type t = obj.gettype();     list<propertyinfo> l = new list<propertyinfo>();     while (t != typeof(object))     {         l.addrange(t.getproperties());         t = t.basetype;          var properites = t.gettype().getproperties();         foreach (var p in properites)         {             string val = "";             try             {                 val = obj.gettype().getproperty(p.name).getvalue(obj, null).tostring();             }             catch             {              }             stringproperties += p.name + " - " + val + "\r\n";         }      }      messagebox.show(stringproperties); } 

enter image description here

yeah visual studio debugger great how many properties object can have. looking indexsomething property of gridviewcolumnheader don't remember exact name remember have used before. have event fires when column gets clicked , know index not name "column number 2? or 3 clicked". know can name nice if can implement debugger function. see how complex can in picture below.

enter image description here

if want properties including of base type this:

        type t = typeof(anytype);         list<propertyinfo> l = new list<propertyinfo>();         while (t != typeof(object))         {             l.addrange(t.getproperties());             t = t.basetype;         } 

or maybe want recursive print of properties, level:

    public static void readalotofvalues(stringbuilder b, object o, int lvl, int maxlvl)     {         type t = o.gettype();         list<propertyinfo> l = new list<propertyinfo>();         while (t != typeof(object))         {             l.addrange(t.getproperties());             t = t.basetype;         }         foreach (var item in l)         {             if (item.canread && item.getindexparameters().length == 0)             {                 object child = item.getvalue(o, null);                 b.appendformat("{0}{1} = {2}\n", new string(' ', 4 * lvl), item.name, child);                 if (lvl < maxlvl)                     readalotofvalues(b, child, lvl + 1, maxlvl);              }         }     } 

edit: calling above method:

object o = ...some object here...; var b = new stringbuilder(); readalotofvalues(b, o, 0, 5); console.writeline(b.tostring()); 

the above read properties of 5 levels of depth objeto.

the search must limited somehow, otherwise loop forever... think of self-referencing object.


Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -