public static IDictionary <int, string> EnumToDictionary <TEnum>() where TEnum : struct { var enumerationType = typeof(TEnum); if (!enumerationType.IsEnum) { throw new ArgumentException("Enumeration type is expected."); } var dictionary = new Dictionary <int, string>(); foreach (int x in System.Enum.GetValues(enumerationType)) { TEnum val = (TEnum)System.Enum.ToObject(typeof(TEnum), x); var name = val.EnumToText(); dictionary.Add(x, name); } return(dictionary); }