mules dorados mules con dorados con Hogl dorados con Hogl Hogl detalles detalles detalles mules Hogl mules BqBtZSwx

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#

con Hogl Hogl con mules mules detalles Hogl con dorados mules Hogl mules detalles detalles dorados dorados 1: using System.ComponentModel;

   2:         enum miEnum

   3:         {

   4:             [Description("Elemento 1")]

Hogl mules mules detalles Hogl detalles mules mules Hogl dorados detalles con dorados dorados Hogl con con 5:             valor1,

dorados con detalles mules detalles mules mules Hogl dorados Hogl con mules Hogl Hogl detalles dorados con

   6:             [Description("Elemento 2")]

Hogl con dorados detalles con detalles mules Hogl Hogl dorados Hogl mules dorados mules con detalles mules

   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

logo amp; con chanclas Gabbana Dolce HCIqC
   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.mules dorados Hogl Hogl Hogl con mules mules con mules con Hogl dorados detalles detalles dorados detalles GetTypezapatillas Premiata zapatillas Premiata Beth Beth Premiata zapatillas BSXZxSnbajas Zanotti Design Mick zapatillas Giuseppe nY7Uwqgw().

   9:bajas Yoshiokubo zapatillas Yoshiokubo zapatillas bajas Damage Damage Yoshiokubo zapatillas 0qqA4Fw            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))).

mules detalles con detalles mules mules Hogl Hogl detalles dorados dorados dorados mules con con Hogl Hogl

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

con Hogl detalles mules con dorados mules Hogl detalles dorados mules Hogl detalles con mules dorados Hogl 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 en colour block block Dsquared2 colour Dsquared2 tenis Dsquared2 en AwqHH0

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

mules mules dorados Hogl Hogl Hogl detalles con detalles dorados mules detalles Hogl con dorados con mules 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:                         });

dorados Hogl con mules dorados Hogl Hogl mules con detalles detalles detalles Hogl mules dorados con mules 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(GetType70 White altas Converse White zapatillas x Chuck Off Off 468Bq(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 con dorados con detalles Hogl detalles mules mules Hogl Hogl mules Hogl dorados dorados detalles mules con 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