Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
swdev:dotnet:enum [2011/12/02 14:02]
smayr
swdev:dotnet:enum [2011/12/02 14:11] (current)
smayr
Line 38: Line 38:
 </code> </code>
  
-To query an enum value for its description:+To simply get the enum string equivalent (translate value into string):
 <code csharp> <code csharp>
 //---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
Line 47: Line 47:
   return Enum.GetName(typeof(TMyColor), obj);   return Enum.GetName(typeof(TMyColor), obj);
 } }
-</code>        +</code> 
 + 
 +To query an enum value for its description: 
 +<code csharp> 
 +using System.ComponentModel; 
 +... 
 + 
 +//---------------------------------------------------------------------------------------- 
 +// Get enum description string for the specified object. 
 +//---------------------------------------------------------------------------------------- 
 +public static string GetEnumDescription(Enum value) 
 +
 +    System.Reflection.FieldInfo fi = value.GetType().GetField(value.ToString()); 
 + 
 +    DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); 
 + 
 +    if ((attributes != null) && (attributes.Length > 0)) 
 +    { 
 +        return attributes[0].Description; 
 +    } 
 +    else 
 +    { 
 +        return value.ToString(); 
 +    } 
 +
 +</code> 
 + 
 +== Enumerate Enum for creating ListBox == 
 +<code csharp> 
 +///---------------------------------------------------------------------------------------- 
 +/// <summary> 
 +/// Enumerate enums to easily create a drop down list based on an enum. 
 +/// Source: http://blog.spontaneouspublicity.com/post/2008/01/17/Associating-Strings-with-enums-in-C.aspx 
 +///  
 +/// Example: 
 +/// DropDownList stateDropDown = new DropDownList(); 
 +/// foreach (States state in EnumToList<States>()) 
 +/// { 
 +///    stateDropDown.Items.Add(GetEnumDescription(state)); 
 +/// } 
 +/// </summary> 
 +/// <typeparam name="T"></typeparam> 
 +/// <returns></returns> 
 +///---------------------------------------------------------------------------------------- 
 +public static IEnumerable<T> EnumToList<T>() 
 +
 +    Type enumType = typeof(T); 
 + 
 +    // Can't use generic type constraints on value types, 
 +    // so have to do check like this 
 +    if (enumType.BaseType != typeof(Enum)) 
 +    { 
 +        throw new ArgumentException("T must be of type System.Enum"); 
 +    } 
 + 
 +    Array enumValArray  = Enum.GetValues(enumType); 
 +    List<T> enumValList = new List<T>(enumValArray.Length); 
 + 
 +    foreach (int val in enumValArray) 
 +    { 
 +        enumValList.Add((T)Enum.Parse(enumType, val.ToString())); 
 +    } 
 + 
 +    return enumValList; 
 +
 +</code>