1: /// <summary>
2: /// Converts a enum to a list
3: /// </summary>
4: /// <typeparam name="T">string name of type of Enum</typeparam>
5: /// <returns>An enumerable list of Enum Type "T"</returns>
6: /// <remarks>
7: /// Usage:
8: /// var list = StringComparison.CurrentCulture.EnumToList();
9: /// </remarks>
10: public static IEnumerable<T> EnumToList<T>(this T enumName) where T : struct
11: {
12: Type enumType = enumName.GetType();
13:
14: // Can’t use generic type constraints on value types,
15: // so have to do check like this
16: if (enumType.BaseType != typeof (Enum))
17: throw new ArgumentException(enumType + " is not an Enum.", "T", null);
18:
19: var enumValArray = Enum.GetValues(enumType);
20: var enumValList = new List<T>(enumValArray.Length);
21:
22: foreach (int val in enumValArray)
23: {
24: enumValList.Add((T) Enum.Parse(enumType, val.ToString()));
25: }
26:
27: return enumValList;
28: }