Este articulo aplica a C# 2.0
Hay veces que tenemos un tipo enumeracion y queremos asegurarnos que cierto parametro esta dentro del rango de nuestra enumeracion, la gran mayoria del codigo que he visto checa haber si X valor es mayor al ultimo elemento de la enumeracion, algo asi:
enum TestEnum {
Enum1 = 1, Enum2 = 2, Enum3 = 3;
}
TestEnum myValue; //generalmente esto pasa cuando esta variable viene como parametro a una funcion
if (myValue > TestEnum.Enum3) //algun codigo para manejar este problema
y cada vez que tuvieran que actualizar la enumeracion tendrian que modificar esta parte del codigo.
Esta funcion nos regresa el primer y ultimo elemento de un tipo Enum, la escribi de forma generica para que pueda ser usada con cualquier tipo enum, pero podrian modificarla para ser para un tipo especifico y se podria usar en C# 1.0 (VS2003), creo que el uso seria raro pero pues aqui esta para cuando se ofrezca
public void GetLowHighFromEnum<T>(out T lowElement, out T highElement) {
if (!typeof(T).IsSubclassOf(typeof(Enum))) //make sure we got an Enum
throw new ArgumentException("parameterized type should be Enum");
T[] values = (T[])Enum.GetValues(typeof(T));
lowElement = values[0];
highElement = values[values.Length - 1];
}
para usarla seria algo mas o menos asi
TestEnum te1, te2;
GetLowHighFromEnum<TestEnum>(out te1, out te2);
Console.WriteLine(te1.ToString());
Console.WriteLine(te2.ToString());
No comments:
Post a Comment