Las Enum nos ofrecen la posibilidad de asociar un nombre descriptivo a un conjunto de valores relacionados entre si, estos valores son numéricos.
Public Enum EstadoCivil
Soltero
Casado
End Enum
Muchas veces cuando tenemos una Enum tenemos la necesidad de obtener el nombre que le hemos dado a uno de los valores como si fuera un String (pe. “Soltero”) para mostrarlo en un mensaje por pantalla o registrarlo en algún fichero, etc.
Acceso directo al valor
Si queremos acceder directamente al literal que le hemos asociado al valor simplemente debemos utilizar el método ToString() del valor:
EstadoCivil.Soltero.ToString("G")
Esta línea de código nos devolvería el String “Soltero”.
Acceder a la descripción detalla del valor
Si lo que queremos es poder acceder a una información mucho más detallada, deberemos tirar de Reflection. Para empezar deberíamos ampliar la definición de la Enum.
Public Enum EstadoCivil
<Description("Un soltero")> Soltero
<Description("Un casado")> Casado
End Enum
Y la forma de acceder sería la siguiente:
Public Function ObtenerDescripcionEstadoCivil(ByVal estado As EstadoCivil) As String
Dim InformacionEstado As FieldInfo = GetType(EstadoCivil).GetField(estado.ToString("G"))
Dim Descripcion As DescriptionAttribute = InformacionEstado.GetCustomAttributes(GetType(DescriptionAttribute), False)(0)
Return Descripcion.Description
End Function
La llamada a esta función nos daría acceso a la descripción que le hemos asignado.
No hay comentarios:
Publicar un comentario