public static PropertyInfoEx GetPropertyEx(this PropertyInfo PropertyInfo, bool enableCaching = true)
 {
     if (enableCaching)
     {
         return(PropertyInfoExCache.GetPropertyEx(PropertyInfo));
     }
     else
     {
         return(new PropertyInfoEx(PropertyInfo, false));
     }
 }
 public static PropertyInfoEx GetPropertyEx(this Type type, string name, BindingFlags bindingFlags = PUBLIC_ISTANCE_STATIC, bool enableCaching = true)
 {
     if (enableCaching)
     {
         return(PropertyInfoExCache.GetPropertyEx(type, name, bindingFlags));
     }
     else
     {
         var f = type.GetProperty(name, bindingFlags);
         if (f == null)
         {
             return(null);
         }
         return(new PropertyInfoEx(f, false));
     }
 }