Diseñar un método para recorrer todas las enumeraciones de una clase.
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.