Подтвердить что ты не робот

Итерирование свойств класса

Я пытаюсь выполнить итерацию по свойствам "Цвет" класса "Цвет".

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

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

4b9b3361

Ответ 1

Да, возможно использование рефлексии. Конкретные цвета определяются как статические свойства 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

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

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

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