Enum<T>

…oder gib dem Affen generischem Zucker

esskar über Programmierung

System.Enum benutze ich oft und es leistet auch zuverlässigen Dienst. Mit etwas generischem Zucker kann man sich das Leben noch ein Stück leichter machen.


namespace System
{
    public static class Enum
    {
        public static T Parse(string value)
        {
            return Enum.Parse(value, false);
        }

        public static T Parse(string value, bool ignoreCase)
        {
            return (T)Enum.Parse(typeof(T), value, ignoreCase);
        }

        public static T ParseWithDefault(string value, T def)
        {
            return Enum.ParseWithDefault(value, false, def);
        }

        public static T ParseWithDefault(string value, bool ignoreCase, T def)
        {
            T retval;
            Enum.TryParse(value, ignoreCase, def, out retval);
            return retval;
        }

        public static bool TryParse(string value, out T rc)
        {
            return Enum.TryParse(value, false, out rc);
        }

        public static bool TryParse(string value, bool ignoreCase, out T rc)
        {
            return Enum.TryParse(value, ignoreCase, default(T), out rc);
        }

        public static bool TryParse(string value, bool ignoreCase, T def, out T rc)
        {
            try
            {
                rc = Enum.Parse(value, ignoreCase);
                return true;
            }
            catch
            {                
                rc = def;
                return false;
            }
        }

        public static T[] Values
        {
            get { return Enum.GetValues(typeof(T)) as T[]; }
        }
    }
}

Erspart u.A. einiges an Tipparbeit


UnmanagedType ut = (UnmanagedType )Enum.Parse(typeof(UnmanagedType), someString, true);
// vs
UnmanagedType ut = Enum.Parse(someString, true);

und da Programmierer von Natur aus faul sind … :-)

Informationen über den Autor

esskar

ist das, was man einen Fullstack Developer bezeichnet. Vom Design bis in die Tiefen der C-Programmierung verfügt er nationale und internationale Projekterfahrung, und alles unter dem Motto — Code ist Poesie. Follow @esskar