迭代类属性

我正在尝试迭代Color类的Color属性。

不幸的是它不在一个集合中,所以它只是一个带有一堆静态属性的类。

有没有人知道它是否可以迭代一个类的属性是静态的还是基于对象的?

是的,可以使用reflection。 特定颜色定义为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 } 

您可能也对此代码感兴趣

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

它提供了一种按名称设置/获取属性的简便方法。 如果您查看GetBestMatchingProperty,您将找到迭代属性,这与在迭代类属性之前发布的方式相同