Я пишу настраиваемый элемент управления, и у меня есть путь свойства как строка (think 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;
}
}