How to loop through the properties of a Class?

16,984

Something like:

object obj = new object();
PropertyInfo[] properties = obj.GetType().GetProperties();
foreach (var p in properties)
{
    var myVal = p.GetValue(obj);
}   

Note you need to allocate the object and pass it into the PropertyInfo.

Share:
16,984
David
Author by

David

Updated on June 09, 2022

Comments

  • David
    David almost 2 years

    I have found that this question is quite common, but i didn't found what i am looking for. Maybe 'cause i want to do something else.

    So i am currently coding for a webcrawler and need to compare objects in a list. What i want to do ist loop through the list, find duplicates, and when i found duplicates merge these.

    When merging i want to:
    - keep the information of the latest/most up to date object.
    - if a field of the latest object is empty, take the value of the old objects field

    I thought looping through the properties of the two objects would be the easiest.

    I've tried a lot of things using reflection, all i could achieve was to show the property names of a class. What i want though is their values.

    If possible, i would use a loop like this:

    foreach(property prop in myObject)
    {
        string value = myObject.prop;
        //do something
    }
    

    Is that possible? Or am i missing something?

    • Yuval Itzchakov
      Yuval Itzchakov almost 9 years
      need to compare objects in a list What objects? Do you control them?
    • J. Doe
      J. Doe almost 9 years
      Can't you make use of IComparable interface? Do you really need to make use of reflection?
    • Captain Kenpachi
      Captain Kenpachi almost 9 years
      Do you know what the objects are beforehand, or are they dynamic in nature?
    • Good Night Nerd Pride
      Good Night Nerd Pride almost 9 years
      The way you are comparing and merging those objects tells me that they are quite similar. Why not use an interface or common super class to abstract the properties you want to compare/merge? Using reflection for this sounds like a very bad idea.
    • David
      David almost 9 years
      Yes i control them. They are the same objects, of a class i created. I neither know how to use IComparable nor how to make use of a super class. Could you please explain?