Я не знаю точно, что поддерживает компактный каркас, но в «полном» C # каждый экземпляр PropertyInfo имеет свойство «Name» и метод «GetValue», который можно использовать, чтобы найти цвет, задав только имя .
Нечто подобное (если разрешено LINQ)
Color color = (Color)propInfos.Single(pi => pi.Name == colorName).GetValue(null);
(Обратите внимание, что .Single
выдает исключение, если colorName не найдено.)