Data Types C#

//http://facebooktoolkit.codeplex.com/
//http://facebooktoolkit.codeplex.com/license
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Text;
namespace Facebook.Utility
{
  ///
    /// Contains helper functions used to help when using enums inside of collections and serialization
  ///

  public class EnumHelper
  {
    private EnumHelper()
    {
    }
    ///
    ///

    ///
    ///
    ///
    ///
    public static string GetEnumDescription(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;
    }
    ///
    ///

    ///
    ///
    ///
    ///
    public static string GetEnumCollectionDescription(Collection 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();
    }
  }
}