Перебор свойств класса - PullRequest
17 голосов
/ 21 февраля 2009

Я пытаюсь перебрать свойства Color класса Color.

К сожалению, его нет в коллекции, поэтому это просто класс со множеством статических свойств.

Кто-нибудь знает, возможно ли перебирать свойства класса, будь то статический объект или объект?

Ответы [ 2 ]

29 голосов
/ 21 февраля 2009

Да, это возможно с помощью отражения. Определенные цвета определяются как статические свойства 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
 }
2 голосов
/ 21 февраля 2009

Вам также может быть интересен этот код

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

Предоставляет простой способ установить / получить свойства по имени. Если вы заглянете в GetBestMatchingProperty, то найдете итерацию по свойствам, которая выполняется так же, как и ранее. Перебор свойств класса

...