Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Iterating over class properties

I'm trying to iterate over the Color class' Color properties.

Unfortunately its not in a collection so its just a class with a bunch of static properties.

Does anyone know if its possible to iterate over a class' properties be it static or object based?

like image 596
Razor Avatar asked Feb 21 '09 02:02

Razor


2 Answers

Yes, it's possible using reflection. Specific colors are defined as a static properties of the 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
 }
like image 71
arul Avatar answered Oct 26 '22 11:10

arul


You might also be interested in this code

http://blog.guymahieu.com/2006/07/11/deep-reflection-of-properties-propertyreflector/

It provides an easy way to set/get properties by name. If you look into GetBestMatchingProperty you'll find the iteration over properties, that is done the same way as been posted before Iterating over class properties

like image 30
Bogdan Kanivets Avatar answered Oct 26 '22 11:10

Bogdan Kanivets