Desenvolvedores.Net - TechBlog

Como recuperar a descrição do enumerador partindo do código dele

1
1 Estrela2 Estrelas3 Estrelas4 Estrelas5 Estrelas (1 votos, média: 5,00 de 5)
Loading...
17 de dezembro de 2010

Em muitos casos temos a necessidade de recuperar a descrição de um Enum partindo do código, pois é este que temos gravado em nosso banco de dados, veja como:

//Enumerador de tipos
public enum GenericDBType
{
    Bit = 0,
    String = 1,
    Object = 2,
    Datetime = 3
}
//Digamos que eu tenha gravado no meu banco o código do enumerador
//neste caso vamos eleger o String (código 1), agora eu desejo recuperar
//a descrição do enumerador (String) a partir do código gravado (1).
//É bem simples, veja:
//Código que tá gravado no banco de dados

int codigoGravadoBanco = 1;
//o retorno será "String"

Enum.GetName(typeof(GenericDbType), codigoGravadoBanco); 

É isso ai, bem simples… 🙂

Compartilhe!

1 Comment for this entry

  • Marcelo disse:

    Grande mestre Wandrey.
    Aproveitando o gancho do seu post.
    Com algumas pequenas modificações podemos recuperar a descrição do próprio enum, usando o atributo Description

    Repare que na declaração do enum, usamos o atributo Description

    //Enumerador de tipos 
            public enum GenericDBType
            {
                [Description("Tipo Bit")]
                Bit = 0,
                [Description("Tipo String")]
                String = 1,
                [Description("Tipo Objeto")]
                Object = 2,
                [Description("Tipo Data e Hora")]
                Datetime = 3
            }
    

    código de exemplo para recuperar a descrição

                //Digamos que eu tenha gravado no meu banco o código do enumerador 
                //neste caso vamos eleger o String (código 1), agora eu desejo recuperar 
                //a descrição do enumerador (String) a partir do código gravado (1). 
                //É bem simples, veja: 
    
                //Código que tá gravado no banco de dados 
                int codigoGravadoBanco = 1;
                //o retorno será "String" 
                Enum.GetName(typeof(GenericDBType), codigoGravadoBanco);
    
                //declara o tipo do enum
                GenericDBType en = (GenericDBType)codigoGravadoBanco;
    
                //vai recuperar a descrição do enum
                string descricao = "";
    
                //recupera a descrição pelo atributo description
                FieldInfo fi = en.GetType().GetField(en.ToString());
                DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
                if (attributes.Length > 0)
                    //pega pelo atributo description
                    descricao = attributes[0].Description;
                else
                    //pega pelo tipo do enum
                    descricao = Enum.GetName(typeof(GenericDBType), codigoGravadoBanco);
    
    //utilize a variável descricao como desejar.
    

    ♦ Marcelo

Deixe uma resposta

O seu endereço de e-mail não será publicado.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>