Colección de citas famosas - Slogan de motivación - Diseñar un método para recorrer todas las enumeraciones de una clase.

Diseñar un método para recorrer todas las enumeraciones de una clase.

Recorrido de enumeración

Tipo de enumeración pública

{

[System. modelo de componente. descripción(" tipo A ")]

TipoA = 1,

[System. modelo de componente. descripción(" tipo b ")]

TipoB = 1,

[System. modelo de componente. descripción(" tipo C ")]

TipoC = 2,

}

Luego, itere a través de sus nombres de enumeración

foreach(Nombres de variables en enum. GetNames(typeof(EMyType)))

{

Console. WriteLine(name);

}

Luego, itere sobre su nombre de enumeración y su valor de enumeración mediante

foreach(var value in enum. GetValues ​​(typeof(EMyType) ))

{

Consola. WriteLine(String.Format("{0}={1}", Value.ToString(), Convert.toint 32(value)));

}

Luego pase The El siguiente método recorre su nombre de enumeración, valor de enumeración y cadena que describe el atributo

foreach(var valor en la enumeración. GetValues(typeof(EMyType)))

{

objeto[] objAttrs = valor. ObtenerTipo(). GetField(valor.ToString()). GetCustomAttributes(tipo de(atributo de descripción), verdadero);

if (objAttrs! = null & amp& amp

objAttrs. length & gt0)

{

atributo de descripción descAttr = objAttrs[0]as atributo de descripción;

Consola. WriteLine(String. format("[{0}]", descAttr. descripción));

}

Console. WriteLine(String.Format("{0}={1}", Value.ToString(), Convert.toint 32(value)));

}

Reflexión de enumeración, leer el valor y la descripción según el valor o los datos de la enumeración.

Ejemplo práctico:

1 tipo t = montaje. Cargar ("XXX.SDK"). GetType(" .get value(t))

4 {

6 objeto[] objAttrs = valor. ObtenerTipo(). GetField(valor.ToString()).

GetCustomAttributes(tipo de (atributo de descripción), verdadero);

7 atributo de descripción descAttr = objAttrs[0]como atributo de descripción;

8 fecha variable = nuevo

9 {

10 descAttr. descripción,

11 nombre = valor. ToString(),

12 valor = conversión. ToInt32(valor)

13 };

14 tabla de datos. Add(date);

15}

Lee la descripción, el contenido y los valores de la enumeración según su nombre.

UserCardStatus userCardStatu = (UserCardStatus) enumeración. Parse(typeof(UserCardStatus), result.user_card_status, true);

string txt = GetEnumDescription(userCardStatus);

Cadena pública GetEnumDescription(Enum Enum value)

{

cadena str = enumValue. ToString();

Campo FieldInfo = enumValue. ObtenerTipo(). GetField(str);

objeto[] objs = campo. GetCustomAttributes(tipo de(atributo de descripción), falso);

if (objs == null || objs. Longitud == 0) devuelve una cadena

atributo de descripción da =( atributo de descripción)objs[0];

Devuelve da. Descripción;

}

Lea la descripción según los elementos individuales enumerados.