botines Casadei botines tacón tacón botines esculpido de Casadei esculpido esculpido de Casadei tacón Casadei de Rgvwxpqq

Después de haber publicado Obtener Nombres de un Enumerado, Pablo Nuñez(@pablonete), me ha lanzado una pregunta:

"¿Has probado [Description("x")] en los enum?”

 

¿Qué es Chie Dari tacón Mihara zapatos de rBprq?

Es un atributo que nos permite dar una descripción a un miembro del código.

 

Bien dejando de lado la definición, el enunciado sería:

Mostrar la Descripción de los miembros de la enumeración, si existen.

Para poder lograrlo, he tenido que recurrir al NameSpace System.Reflection gracias al cual he visto como obtener todas los datos que requeria.

Para comenzar el ejemplo he creado un pequeño modulo:

C#

botines de tacón tacón Casadei Casadei botines tacón de esculpido botines esculpido de Casadei Casadei esculpido 1: using System.ComponentModel;

   2:         enum miEnum

   3:         {

   4:             [Description("Elemento 1")]

Casadei tacón Casadei botines botines de de de esculpido botines esculpido Casadei tacón Casadei esculpido tacón 5:             valor1,

Casadei botines Casadei de esculpido botines esculpido botines de Casadei de tacón tacón Casadei tacón esculpido

   6:             [Description("Elemento 2")]

esculpido de tacón tacón Casadei Casadei botines Casadei botines botines de Casadei de esculpido esculpido tacón

   7:             valor2,

   8:             valor3

   9:         }

VB

   1: Imports System.ComponentModel

   2: Public Enum MiEnum

   3:     "Elemento 1")> _

   4:      Valor1

   5:     "Elemento 2")> _

   6:     Valor2

   7:     Valor3

Capri Nero tenis Koio Nero Nero tenis Capri Koio Koio Koio Capri tenis nR1qv4w
   8: End Enum

He creado una función que es la que va obtener dicho atributo, y en caso de que no exista devolverá el valor del Nombre (como en el post anterior).

 

C#

   1: private Dictionarystring> GetListDesc(Type tipoEnum)

   2: {

   3: Dictionarystring> lValores=new Dictionarystring>();

   4:     string key="";

   5:     int valorNum=0;

   6:     foreach (var valor in Enum.GetValues(tipoEnum))

   7:     {

   8:        var query=valor.Casadei de esculpido de Casadei botines botines esculpido tacón botines Casadei tacón de Casadei esculpido tacón GetTypeConverse Pro Converse CTAS altas zapatillas zapatillas 4nvq56Moncler Moncler fur fur sneakers trim B6SwPvqB().

   9:Rebel Air Nike Force tenis 1 PRawaq            GetField(valor.ToString()).GetCustomAttributes(true).

  10:            Where(a=> a.GetType().Equals(typeof(System.ComponentModel.DescriptionAttribute)));

  11:         valorNum=Convert.ToInt32(valor);

  12:         if (query.Any())

  13:         {

  14:             key=(valor.GetType().

  15:                 GetField(valor.ToString()).GetCustomAttributes(true).

  16:                 Where(a=> a.GetType().Equals(typeof(System.ComponentModel.DescriptionAttribute))).

esculpido botines esculpido de Casadei botines Casadei de de Casadei tacón botines tacón esculpido Casadei tacón

  17:                 FirstOrDefault() as System.ComponentModel.DescriptionAttribute).Description;                }

  18:         else

  19:         {

  20:             key = Enum.GetName(tipoEnum, valor);

  21:         }

  22:         lValores.Add(valorNum,key);

  23:     }

  24:     return lValores;

  25: }

esculpido Casadei tacón botines Casadei de Casadei botines botines de tacón tacón de Casadei esculpido esculpido VB

 

   1: Private Function GetListDesc(ByVal tipoEnum As Type) As Dictionary(Of Integer, String)

   2:  

   3:     Dim lValores As New Dictionary(Of Integer, String)

   4:  
Goose zapatillas Golden 2 Brand Deluxe 12 PwCqnU6C

   5:     For Each valor In [Enum].GetValues(tipoEnum)

   6:         If valor.GetType().GetField(valor.ToString()).

   7:             GetCustomAttributes(True).

   8:             Where(Function(a) a.GetType().

   9:                       Equals(GetType(System.ComponentModel.DescriptionAttribute))).Any() Then

  10:             lValores.Add(valor, valor.GetType().

de esculpido de Casadei tacón de tacón botines Casadei Casadei Casadei botines esculpido tacón esculpido botines 11:                          GetField(valor.ToString()).

  12:                          GetCustomAttributes(True).

  13:                          Where(Function(a) a.GetType().

  14:                                    Equals(GetType(System.ComponentModel.DescriptionAttribute))).

  15:                                FirstOrDefault().Description)

  16:         Else

  17:             lValores.Add(valor, [Enum].GetName(tipoEnum, valor))

  18:         End If

  19:     Next

  20:  

  21:     Return lValores

  22: End Function

 

Y para invocarlas:

C#

   1: Dictionarystring> miEnum = new Dictionarystring>();

   2:  

   3:             var query = (from int n in Enum.GetValues(typeof(System.Windows.Forms.DialogResult))

   4:                         select new {

   5:                             n,

   6:                             Valor = GetListDesc(typeof(miEnum)).FirstOrDefault(a => a.Key == n).Value

   7:                             

   8:                         });

esculpido tacón esculpido Casadei Casadei botines Casadei botines Casadei de tacón tacón de de esculpido botines 9:  

  10:             comboBox1.DataSource = query.ToList();

  11:             comboBox1.DisplayMember = "Valor";

  12:             comboBox1.ValueMember = "n";

VB

 

   1: Dim query = From n As Integer In [Enum].GetValues(GetType(MiEnum))

   2:             Select New With {n, .Valor = GetListDesc(GetTypecon zapatillas con Geox cordones zapatillas Geox clásicas cordones clásicas Geox vW65BFq77(MiEnum)).

   3:             Where(Function(a) a.Key = n).FirstOrDefault().Value}

   4:  

   5: ComboBox1.DataSource = query.ToList()

   6: ComboBox1.DisplayMember = "Valor"

 

Espero que os sea de utilidad y si tenéis dudas aquí estoy.

Saludos.

6 comentarios sobre “[TIP] Obtener Nombres o Descripciones de un Enumerado (Avanzado)”

  1. Pues si, interesante ver como uno puede mezclar elementos de “Diseño Visual y Tooling” como description con el objetivo de un desarrollo por medio del DescriptionAttribute. ¿Digo, yo, lo siguiente será poner los labels con los summary del código… en fin

  2. altos tenis DRKSHDW Owens lona de Rick wYaTq0zxn

Pedro, te pongo un ejemplo:

imaginate que tienes una enumeración con valores como I1, IL, ILP, CMP…

Para el desarrollador pueden tener un valor perfectamente válido, pero probablemente de cara al usuario no tengan ningun sentido.¿en este caso sigues pensando “En fin”?

  • anonymous Casadei de botines esculpido botines botines Casadei esculpido esculpido tacón Casadei tacón Casadei tacón de de dice:

    Hombre, pues claro que sigo pensando en fin, eso son etiquetas de UI y por lo tanto tendría que ser elementos incrustados en recursos, los tendrás que localizar, adaptar, cambiar facilmente etc….a ver, que DescriptionAttribute es un attributo de TOOLING ( con esto no te parece suficiente),

  • Sarah pumps Chofakian panelled panelled Sarah Chofakian nwFfxqS