C# 迭代类属性

C# 迭代类属性,c#,properties,iteration,C#,Properties,Iteration,我试图迭代Color类的颜色属性 不幸的是,它不在一个集合中,所以它只是一个具有一堆静态属性的类 有人知道是否可以迭代类的属性,无论是静态的还是基于对象的吗?是的,可以使用反射。特定颜色定义为颜色结构的静态属性 PropertyInfo[] colors = typeof(Color).GetProperties(BindingFlags.Static|BindingFlags.Public); foreach(PropertyInfo pi in colors) { Color

我试图迭代Color类的颜色属性

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


有人知道是否可以迭代类的属性,无论是静态的还是基于对象的吗?

是的,可以使用反射。特定颜色定义为
颜色结构的静态属性

 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
 }

您可能还对这段代码感兴趣

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

我将添加:if(pi.PropertyType==typeof(Color)),以防止任何新属性添加到Color中。