Установка свойства выравнивания путем отражения со строковым значением - PullRequest
1 голос
/ 14 сентября 2010

Я бы хотел установить свойство выравнивания (горизонтальное / вертикальное) объекта через отражение со значением типа string. Я использую что-то вроде

private void SetPropertiesFromString(object nav, string properties)   
{  
    Regex r = new Regex("`(?<property>[^~]*)~(?<values>[^`]*)");  
    MatchCollection mc = r.Matches(properties);  
    Type type = nav.GetType();  
    for (int i = 0; i < mc.Count; i++)  
    {  
        PropertyInfo prop = type.GetProperty(mc[i].Groups["property"].Value);  
        prop.SetValue(nav, Convert.ChangeType(mc[i].Groups["values"].Value, prop.PropertyType), null);  
    }  
}

(Совсем как это )

Моя проблема в том, что я читаю свойства из XML, есть только HorizontalAlignment = "Stretch". Чем я создаю новую сущность Control, и я не знаю, как установить свойство, такое как HorizontalAlignment, где значение равно «Растянуть» и т. Д. Это вызывает исключение «Неверное приведение из« System.String »к« System.Windows.HorizontAlignment ». «

1 Ответ

0 голосов
/ 14 сентября 2010

HorizontalAlignment является типом перечисления. System.Enum.Parse позволяет преобразовать строку в соответствующее значение перечисления.

...