Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to loop through the properties of a Class? [duplicate]

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?

like image 959
David Avatar asked May 27 '15 07:05

David


1 Answers

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.

like image 79
Ospho Avatar answered Oct 10 '22 13:10

Ospho