Another approach you can use in this situation is converting an object into a JSON object. The JSON.NET library makes this easy and almost any object can be represented in JSON. You can then loop through the objects properties as Name / Value pairs. This approach would be useful for composite objects which contain other objects as you can loop through them in a tree-like nature.
MyClass some_object = new MyClass() { PropA = "A", PropB = "B", PropC = "C" };
JObject json = JObject.FromObject(some_object);
foreach (JProperty property in json.Properties())
Console.WriteLine(property.Name + " - " + property.Value);
Console.ReadLine();