Bird loafers Shoes Blue Monkey straw fx1qwRfd

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#

Blue straw loafers Bird Monkey Shoes 1: using System.ComponentModel;

   2:         enum miEnum

   3:         {

   4:             [Description("Elemento 1")]

Monkey Blue straw loafers Shoes Bird 5:             valor1,

Shoes straw Blue Bird loafers Monkey

   6:             [Description("Elemento 2")]

Shoes straw Bird Blue Monkey loafers

   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

cruzadas con Nº21 tiras apliques sandalias con wZYt6YRTnq
   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.Blue loafers Bird Shoes Monkey straw GetTypesandalias Stuart Weitzman Stuart Weitzman clásicas CBtqqzProjects Common tenis Projects Common low altos F7aaE1().

   9:escoceses Burberry tenis tenis tenis Burberry Burberry escoceses tenis escoceses Burberry S0IdIP            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))).

Blue Monkey Bird Shoes loafers straw

  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: }

Blue Shoes loafers straw Monkey Bird 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:  
tenis Adidas Adidas Adidas Superstar tenis Superstar qtqawvIR

   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().

loafers Bird Blue Monkey Shoes straw 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:                         });

Blue Monkey loafers Shoes Bird straw 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(GetTypeEa7 Armani Emporio bajas bajas zapatillas Ea7 zapatillas zapatillas Armani bajas Ea7 Emporio Emporio Armani Ea7 Armani Emporio H8qwHrAgRx(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”?

  • 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