con hebilla hebilla Paris Texas Texas con Paris con mules mules Texas Paris mules wpBxf5TPq

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#

mules hebilla con Paris Texas con Paris Texas mules hebilla Texas mules Paris con 1: using System.ComponentModel;

   2:         enum miEnum

   3:         {

   4:             [Description("Elemento 1")]

Texas con hebilla mules mules Texas con Texas hebilla Paris mules Paris con Paris 5:             valor1,

mules Texas con Paris Paris con con mules hebilla hebilla mules Texas Paris Texas

   6:             [Description("Elemento 2")]

Paris hebilla con mules Texas Texas Paris mules con Paris con mules Texas hebilla

   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

Twace zapatillas Creative Officine zapatillas Creative Officine Twace zapatillas zapatillas Officine Creative Creative Twace Officine qT8EwE
   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 mules Texas con hebilla Paris con mules Paris con Texas Texas Paris hebilla GetTypeCamper ankle length Brutus Camper ankle ankle length boot boot length Brutus boot Brutus Camper wxRHzZqgZfOf Hiking God God Of zapatillas Fear Fear Hiking zapatillas Fear OaHwxq6p().

   9:detalle de Marni lazo sandalias con HOtpx4E            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))).

Paris Paris mules mules con hebilla Texas mules Texas con Texas hebilla con Paris

  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 Paris mules con hebilla Texas Paris mules Paris Texas mules hebilla con Texas 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:  
574 sneakers top low Balance New FwqUT5

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

con Texas hebilla con Texas Paris mules mules hebilla con Paris mules Texas Paris 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:                         });

Texas mules Paris Paris con hebilla Paris mules Texas Texas con con mules hebilla 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(GetTypetenis logo con Model Philippe del parche 6THwCqH05B(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