/// <summary>Parses a string and converts to an enumeration.</summary>
        /// <param name="enumType">Type of enumeration to return.</param>
        /// <param name="fieldValue">EnumMemberAttribute.Value string or enum.ToString().</param>
        /// <returns>Enumeration of the correct value.</returns>
        public static Enum ToEnum(Type enumType, string fieldValue)
        {
            Enum enumValue = EnumExtensions.GetEnumFromAttribute(enumType, fieldValue);

            return(enumValue == null ?
                   (Enum)Enum.Parse(enumType, fieldValue) :
                   enumValue);
        }
        /// <summary>Parses a string and converts to an enumeration.</summary>
        /// <typeparam name="T">Type of enumeration to return.</typeparam>
        /// <param name="fieldValue">EnumMemberAttribute.Value string or enum.ToString().</param>
        /// <param name="defaultValue">Default value to use if the EnumMemberAttribute is not obtained.</param>
        /// <returns>Enumeration of the correct value.</returns>
        public static T ToEnum <T>(string fieldValue, T defaultValue) where T : struct, IConvertible
        {
            Enum enumValue = EnumExtensions.GetEnumFromAttribute(typeof(T), fieldValue);

            if (enumValue != null)
            {
                return((T)(object)enumValue);
            }

            T parsedValue = defaultValue;

            return(Enum.TryParse(fieldValue, out parsedValue) ? parsedValue : defaultValue);
        }