Получить Enum <T> значение Описание

У меня есть мой класс enumHelper, который содержит эти:

public static IList<T> GetValues()
{
  IList<T> list = new List<T>();
  foreach (object value in Enum.GetValues(typeof(T)))
  {
    list.Add((T)value);
  }
  return list;
}

а также

public static string Description(Enum value)
{
  Attribute DescAttribute = LMIGHelper.GetAttribute(value, typeof(DescriptionAttribute));
  if (DescAttribute == null)
    return value.ToString();
  else
    return ((DescriptionAttribute)DescAttribute).Description;
}

мое перечисление что-то вроде:

public enum OutputType
{
    File,
    [Description("Data Table")]
    DataTable
}

Все идет нормально. Все предыдущие отлично работают. Теперь я хочу добавить новый помощник для возврата BindingList>, чтобы я мог связать любое перечисление с любой комбо, используя

BindingList<KeyValuePair<OutputType, string>> list = Enum<OutputType>.GetBindableList();
cbo.datasource=list;
cbo.DisplayMember="Value";
cbo.ValueMember="Key";

Для этого я добавил:

public static BindingList<KeyValuePair<T, string>> GetBindingList()
{
    BindingList<KeyValuePair<T, string>> list = new BindingList<KeyValuePair<T, string>>();
    foreach (T value in Enum<T>.GetValues())
    {
        string Desc = Enum<T>.Description(value);
        list.Add(new KeyValuePair<T, string>(value, Desc));
    }
    return list;
}

Но «Enum.Description (value)» даже не компилируется: аргумент «1»: не может преобразовать из «T» в «System.Enum»

Как я могу это сделать? Это вообще возможно?

Спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос