public static void ProcessPublicInstanceProperties(object obj, ForEachProperty forEach)
 {
     if (obj == null)
     {
         return;
     }
     ProcessPublicInstanceProperties(obj.GetType(), forEach);
 }
        public static void ProcessPublicInstanceProperties(Type type, ForEachProperty forEach, bool baseClassPropertiesFirst)
        {
            List <PropertyInfo> propertyList = GetPublicInstanceProperties(type, baseClassPropertiesFirst);

            foreach (PropertyInfo property in propertyList)
            {
                if (!forEach(property))
                {
                    return;
                }
            }
        }
 public static void ProcessPublicInstanceProperties(Type type, ForEachProperty forEach)
 {
     ProcessPublicInstanceProperties(type, forEach, false);
 }