Busqueda local

Loading

lunes, 21 de febrero de 2011

Enums

Tal vez ni siquiera hayas escuchado hablar de los Enums, o simplemente los has evitado, porque a los programadores nos preocupa poner valores en constantes, ya que un enum es una lista de constantes.
Por lo general se emplean cuando el dato en cuestión, podría estar almacenado en una tabla de la base de datos, pero le sirve al programador para tomar decisiones durante el flujo de la aplicación; ya que por su naturaleza, sería necesario que nosotros supiéramos de su tipo, etc.
Y ni que decir si la lista debe ser usada en la capa de presentación, por ejemplo llenar un combo para que el usuario selecciona alguno. La limitante con la que nos encontramos es que el nombre de la constante en el Enum no es muy amigable para el usuario; si son palabras compuestas podemos recurrir a un truco y ponerle un Guion bajo que fácilmente podemos sustituir con un espacio.
 

Por ejemplo

Cuota_Semana, Cuota_Mes
Cuando empecé a trabajar con el MVC encontré un aliado en los atributos, ya que son ampliamente usados en los ejemplos. Y me pregunte si sería posible hacer algo con estos atributos en nuestras clases, para hacer de nuestros Enums algo más dinámico. Y me encontré con un artículo en el que se expone la idea de la cual partió este artículo.
 

Uso genérico del Enum

Lo primero será crear una clase que herede de Attribute:
enum1
Para poder explotar nuestro atributo será necesario crear un método de extensión, usando un poco de Reflexion:
enum2
A partir de aquí podemos definir nuestros Enums siempre y cuando deriven de nuestra clase EnumAttr
Por ejemplo declaremos un Enum de tipos:
enum4
Una vez que lo hemos creado podemos definir nuestro Enum, con un pequeño requerimiento, usar nuestro atributo:
enum5
Listo, si queremos extraer la lista para poder desplegarla con un texto más amigable, solo debemos convertir nuestro Enum a un List<string> y podremos acceder a ellos:
enum3
Así seria la salida en la consola:
enum6
Espero que les sea de utilidad.

No hay comentarios:

Publicar un comentario