static public T ToEnum <T>(this string str, T defaultValue) where T : Enum { if (string.IsNullOrEmpty(str)) { return(defaultValue); } Enum[] allValues = (Enum[])(Enum.GetValues(typeof(Enum))); for (int i = 0, n = allValues.Length; i < n; ++i) { Enum enumValue = allValues[i]; if (FormatEnumToString(enumValue).Equals(GetLowerCase(str))) { return((T)enumValue); } } DebugTools.LogWarning("Could not find matching enum for \"{0}\" in enum \"{1}\"!", str, typeof(T).ToString()); return(defaultValue); }