17

我正在尝试遍历 Color 类的 Color 属性。

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

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

4

2 回答 2

29

是的,可以使用反射。特定颜色被定义为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
 }
于 2009-02-21T02:33:41.100 回答
2

您可能也对此代码感兴趣

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

它提供了一种按名称设置/获取属性的简单方法。如果您查看 GetBestMatchingProperty,您会发现对属性的迭代,其完成方式与 迭代类属性之前发布的相同

于 2009-02-21T03:01:59.410 回答