Mega Code Archive

 
Categories / C# / Data Types
 

Get Enum Description

//http://facebooktoolkit.codeplex.com/ //http://facebooktoolkit.codeplex.com/license using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.Text; namespace Facebook.Utility {   ///<summary>     /// Contains helper functions used to help when using enums inside of collections and serialization   ///</summary>   public class EnumHelper   {     private EnumHelper()     {     }     ///<summary>     ///</summary>     ///<param name="enumeratedType"></param>     ///<typeparam name="T"></typeparam>     ///<returns></returns>     ///<exception cref="ArgumentException"></exception>     public static string GetEnumDescription<T>(T enumeratedType)     {       var description = enumeratedType.ToString();       var enumType = typeof (T);       // Can't use 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");       var fieldInfo = enumeratedType.GetType().GetField(enumeratedType.ToString());       if (fieldInfo != null)       {         var attributes = fieldInfo.GetCustomAttributes(typeof (DescriptionAttribute), false);         if (attributes != null && attributes.Length > 0)         {           description = ((DescriptionAttribute) attributes[0]).Description;         }       }       return description;     }     ///<summary>     ///</summary>     ///<param name="enums"></param>     ///<typeparam name="T"></typeparam>     ///<returns></returns>     ///<exception cref="ArgumentException"></exception>     public static string GetEnumCollectionDescription<T>(Collection<T> enums)     {       var sb = new StringBuilder();       var enumType = typeof (T);       // Can't use 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");       foreach (var enumeratedType in enums)       {         sb.AppendLine(GetEnumDescription(enumeratedType));       }       return sb.ToString();     }   } }