2009-02-21 13 views
17

J'essaie de parcourir les propriétés Color de la classe Color.Itérer sur les propriétés de classe

Malheureusement, ce n'est pas une collection donc c'est juste une classe avec un tas de propriétés statiques.

Est-ce que quelqu'un sait s'il est possible d'itérer sur les propriétés d'une classe, qu'elles soient statiques ou basées sur des objets?

Répondre

29

Oui, c'est possible en utilisant la réflexion. Les couleurs spécifiques sont définies comme des propriétés statiques de 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

J'ajouterais: if (typeof pi.PropertyType == (couleur)) à à l'épreuve du futur contre toute nouvelle propriété ajoutée à Color. – ICR

Questions connexes