2009-02-21 26 views
17

Estoy intentando iterar sobre las propiedades de color de la clase Color.Iteración sobre propiedades de clase

Desafortunadamente no está en una colección, por lo que es simplemente una clase con un montón de propiedades estáticas.

¿Alguien sabe si es posible iterar sobre las propiedades de una clase, ya sea estática o basada en objeto?

Respuesta

29

Sí, es posible mediante la reflexión. Los colores específicos se definen como propiedades estáticas del Color struct.

PropertyInfo[] colors = typeof(Color).GetProperties(BindingFlags.Static|BindingFlags.Public); 
foreach(PropertyInfo pi in colors) { 
    Color c = (Color)pi.GetValue(null, null); 
    // do something here with the color 
} 
+6

yo añadiría: si (== pi.PropertyType typeof (color)) a a prueba del futuro contra cualquier nueva propiedad que se agregue a Color. – ICR

Cuestiones relacionadas