Preencher uma DropDownList com uma Enum e descrições personalizadas

Olá!
Segue abaixo uma dica para preencher uma
DropDownListcom uma enum, customizando o valor que irá aparecer no Text do ListItem:

protected void FillComboWithEnum(ref DropDownList combo, Type myEnum)
{
    ListItem item;
    string [] names;
    
    combo.Items.Clear();

    names = Enum.GetNames(myEnum);
    for (int i = 0; i <= names.GetUpperBound(0); i++)
    {
        item = new ListItem();
        item.Text = GetDescription((Enum)Enum.Parse(myEnum, names[i]));
        item.Value = Convert.ToInt32(Enum.Parse(myEnum, names[i])).ToString();

        combo.Items.Add(item);
    }
}

public static string GetDescription(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());
    DescriptionAttribute[] attributes =
          (DescriptionAttribute[])fi.GetCustomAttributes(
          typeof(DescriptionAttribute), false);

    return (attributes.Length > 0) ? attributes[0].Description : value.ToString();
}
 
para que isso funcione é necessário utilizar os namespaces:
using System.Reflection;
using System.ComponentModel;
 
Ex.:
Definição da enum:
**************
using System.ComponentModel;
namespace Smart.ERP.Business.Cadastros { public enum TIPO_DEPOSITO : byte { [Description("Matéria Prima")] MateriaPrima = 1, [Description("Produto Acabado")] ProdutoAcabado = 2, [Description("Produto Semi-Acabado")] ProdutoSemiAcabado = 3, [Description("Não Produtivo")] NaoProdutivo = 4 } }
**************

em alguma página: FillComboWithEnum(ref combo, typeof(TIPO_DEPOSITO));

 

onde TIPO_DEPOSITO é o nome da enum, neste caso TIPO_DEPOSITO.

 

[]'s

Marco.