Я пишу пользовательский элемент управления, и у меня есть путь свойства в виде строки (думаю, comboBox.SelectedValuePath
).
Каков наилучший способ в коде для оценки этой строки для произвольного объекта?
Я, очевидно, могу просто разобрать его сам, но это взлом, и я хочу, чтобы путь поддерживал все, что comboBox.SelectedValuePath
делает (для согласованности).
Результат (спасибо Арану Малхолланду):
Не уверен насчет производительности, но сейчас мне плевать на производительность.
public class BindingEvaluator {
#region Target Class
private class Target : DependencyObject {
public static readonly DependencyProperty ResultProperty = DependencyProperty.Register(
"Result", typeof(IEnumerable), typeof(BindingEvaluator)
);
public object Result {
get { return this.GetValue(ResultProperty); }
set { this.SetValue(ResultProperty, value); }
}
}
#endregion
public object GetValue(object source, string propertyPath) {
var target = new Target();
BindingOperations.SetBinding(target, Target.ResultProperty, new Binding(propertyPath) {
Source = source,
Mode = BindingMode.OneTime
});
return target.Result;
}
}