2009-02-21 10 views
17

Sto tentando di eseguire un'iterazione sulla classe Colore 'Proprietà colore.Iterazione sulle proprietà della classe

Sfortunatamente non è in una collezione quindi è solo una classe con un mucchio di proprietà statiche.

Qualcuno sa se è possibile iterare sulle proprietà di una classe sia esso statico o basato su oggetti?

risposta

29

Sì, è possibile utilizzare la riflessione. I colori specifici sono definiti come proprietà statiche di 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

Vorrei aggiungere: se (pi.PropertyType == typeof (Colore)) a a prova di futuro contro qualsiasi nuova proprietà aggiunta a Colore. – ICR