martes, 2 de junio de 2009

Validar valor de una enumeración

Si queremos que una variable tenga un solo valor y no una combinación de valores de una enumeración, entonces hay que validar la enumeración con el método IsDefined de la clase Enum. En el siguiente código, si quitaramos el bloque if y en caso de que el CType (VB .Net) no falle, entonces se devolverá una combinación de días separadas con coma.

Código en VB .Net:

<Flags()> _
Enum Dias As Byte
Lunes = 1
Martes = 2
Miercoles = 4
Jueves = 8
Viernes = 16
Sábado = 32
Domingo = 64
NA = 128
End Enum


Sub Main()

Dim a As Dias
a = CType(254, Dias)
If [Enum].IsDefined(GetType(Dias), a) = False Then
a = Dias.NA
End If
Console.Write(a.ToString)
Console.Read()
End Sub


Código en C#:

[Flags()]
enum Dias : byte
{
Lunes = 1,
Martes = 2,
Miercoles = 4,
Jueves = 8,
Viernes = 16,
Sabado = 32,
Domingo = 64,
NA = 128
}

class Program
{
static void Main(string[] args)
{
Dias d = (Dias)254;
if (Enum.IsDefined(typeof(Dias),d) == false)
d = Dias.NA;
Console.Write(d.ToString());
Console.Read();
}
}

No hay comentarios: