/// <summary>
        /// Cast to
        /// </summary>
        /// <param name="str"></param>
        /// <param name="type"></param>
        /// <param name="ignoreCase"></param>
        /// <param name="format"></param>
        /// <param name="numberStyles"></param>
        /// <param name="dateTimeStyles"></param>
        /// <param name="formatProvider"></param>
        /// <returns></returns>
        public static object CastToNullable(this string str, Type type, IgnoreCase ignoreCase,
                                            string format = null, NumberStyles?numberStyles = null, DateTimeStyles?dateTimeStyles = null,
                                            IFormatProvider formatProvider = null)
        {
            object result = default;

            return(str.IsNullable(type, (t) => result = t, () => result = null,
                                  ignoreCase.X(), format, numberStyles, dateTimeStyles, formatProvider)
                ? result
                : null);
        }
        /// <summary>
        /// Cast to
        /// </summary>
        /// <param name="str"></param>
        /// <param name="ignoreCase"></param>
        /// <param name="format"></param>
        /// <param name="numberStyles"></param>
        /// <param name="dateTimeStyles"></param>
        /// <param name="formatProvider"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static T?CastToNullable <T>(this string str, IgnoreCase ignoreCase,
                                           string format = null, NumberStyles?numberStyles = null, DateTimeStyles?dateTimeStyles = null,
                                           IFormatProvider formatProvider = null) where T : struct
        {
            T?result = default;

            return(str.IsNullable <T>((t) => result = t, () => result = null,
                                      ignoreCase.X(), format, numberStyles, dateTimeStyles, formatProvider)
                ? result
                : null);
        }
 public static bool __enumIs(string s, Type type, Action <object> action, IgnoreCase ignoreCase) =>
 type.IsEnum && StringEnumDeterminer.Is(s, type, ignoreCase.X(), action);