| /// <summary> |
| /// Helper class to allow users to get the values of a enumeration |
| /// </summary> |
| public static class EnumHelper |
| { |
| /// <summary> |
| /// Get values of an enumeration of type T |
| /// </summary> |
| /// <typeparam name="T">Enumeration type</typeparam> |
| /// <returns>List of types in a enumeration</returns> |
| public static T[] GetValues<T>() |
| { |
| Type enumType = typeof(T); |
| |
| if (!enumType.IsEnum) |
| { |
| throw new ArgumentException("Type '" + enumType.Name + "' is not an enum"); |
| } |
| |
| List<T> values = new List<T>(); |
| |
| var fields = from field in enumType.GetFields() |
| where field.IsLiteral |
| select field; |
| |
| foreach (FieldInfo field in fields) |
| { |
| object value = field.GetValue(enumType); |
| values.Add((T)value); |
| } |
| |
| return values.ToArray(); |
| } |
| |
| /// <summary> |
| /// Get all the values of an enumeration of Type enumType |
| /// </summary> |
| /// <param name="enumType">Enumeration type</param> |
| /// <returns>Array of objects</returns> |
| public static object[] GetValues(Type enumType) |
| { |
| if (!enumType.IsEnum) |
| { |
| throw new ArgumentException("Type '" + enumType.Name + "' is not an enum"); |
| } |
| |
| List<object> values = new List<object>(); |
| |
| var fields = from field in enumType.GetFields() |
| where field.IsLiteral |
| select field; |
| |
| foreach (FieldInfo field in fields) |
| { |
| object value = field.GetValue(enumType); |
| values.Add(value); |
| } |
| |
| return values.ToArray(); |
| } |
| |
| /// <summary> |
| /// Get a list of items inside a enumeration |
| /// </summary> |
| /// <param name="enumType">The enumeration type</param> |
| /// <returns>List of items Index, Value</returns> |
| public static List<EnumHelperItem> GetListOfItems(Type enumType) |
| { |
| List<EnumHelperItem> output = new List<EnumHelperItem>(); |
| if (!enumType.IsEnum) |
| { |
| throw new ArgumentException("Type '" + enumType.Name + "' is not an enum"); |
| } |
| |
| var fields = from field in enumType.GetFields() |
| where field.IsLiteral |
| select field; |
| |
| int i=0; |
| foreach (FieldInfo field in fields) |
| { |
| object value = field.GetValue(enumType); |
| output.Add(new EnumHelperItem(i, value)); |
| i++; |
| } |
| |
| return output; |
| } |
| |
| } |
| |
| /// <summary> |
| /// Item helper |
| /// </summary> |
| public class EnumHelperItem : IValueConverter |
| { |
| int index; |
| |
| /// <summary> |
| /// Index of the enumerator item |
| /// </summary> |
| public int Index |
| { |
| get { return index; } |
| set { index = value; } |
| } |
| object value; |
| |
| /// <summary> |
| /// Value of the enumerator item |
| /// </summary> |
| public object Value |
| { |
| get { return this.value; } |
| set { this.value = value; } |
| } |
| |
| /// <summary> |
| /// Default constructor |
| /// </summary> |
| public EnumHelperItem() |
| { } |
| |
| /// <summary> |
| /// EnumHelperItem constructor |
| /// </summary> |
| /// <param name="index"></param> |
| /// <param name="value"></param> |
| public EnumHelperItem(int index, object value) |
| { |
| Index = index; |
| Value = value; |
| } |
| |
| #region IValueConverter Members |
| /// <summary> |
| /// |
| /// </summary> |
| /// <param name="value"></param> |
| /// <param name="targetType"></param> |
| /// <param name="parameter"></param> |
| /// <param name="culture"></param> |
| /// <returns></returns> |
| public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) |
| { |
| return value.ToString(); |
| //return ((EnumHelperItem)value).Value.ToString(); |
| } |
| |
| /// <summary> |
| /// |
| /// </summary> |
| /// <param name="value"></param> |
| /// <param name="targetType"></param> |
| /// <param name="parameter"></param> |
| /// <param name="culture"></param> |
| /// <returns></returns> |
| public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) |
| { |
| return Enum.Parse(targetType,((EnumHelperItem)value).Value.ToString(), false); |
| } |
| /// <summary> |
| /// |
| /// </summary> |
| /// <param name="obj"></param> |
| /// <returns></returns> |
| public override bool Equals(object obj) |
| { |
| if (this.Value != null && obj != null) |
| if (obj.GetType() == typeof(string)) |
| return obj.ToString().Equals(this.Value.ToString()); |
| else if (obj.GetType() == typeof(EnumHelperItem)) |
| return ((EnumHelperItem)obj).Value.ToString().Equals(this.Value.ToString()); |
| else |
| return false; |
| else |
| return false; |
| } |
| |
| /// <summary> |
| /// |
| /// </summary> |
| /// <returns></returns> |
| public override int GetHashCode() |
| { |
| return base.GetHashCode(); |
| } |
| #endregion |
| } |