Getting Object’s All Properties at Runtime

We often need to know a given object’s all properties at run time, for example, tracking a data container object’s properties changes across different components. Here is a simple helper class you can use to do this magic.

namespace Helper

{

    using System;

    using System.Collections.Generic;

    using System.Diagnostics;

    public static class ObjPropertiesPrinter<objType>

    {

        public static void OutPut(objType objInstance)

        {

            Type myObjectType = typeof(objType);

            // Get public properties via reflection

            System.Reflection.PropertyInfo[] propInfo =

               myObjectType.GetProperties();

            // Output properties

            foreach (System.Reflection.PropertyInfo info in propInfo)

            {

                Debug.WriteLine(info.Name + ": " + info.GetValue(objInstance, null).ToString());

            }

        }

    }

}

Once this class is added to your project, it can be used in this way:

Helper.ObjPropertiesPrinter<MyClass>.OutPut(oneInstanceOfMyClass);

Similarly, you can also get other info via reflection such as fields, events, etc.