Установить член из кода, используя путь свойства

Я ищу способ установить конкретный член класса или структуры, указанной с помощью пути привязки, такого как SomeStruct.AnotherStructs.Item[0].Str . В основном я хочу иметь возможность делать то, что делает WPF, посредством привязки, чтения и записи значений, но из кода.

Я сделал несколько попыток использовать BindingEvaluator (см. Есть ли способ получить значение свойства объекта с помощью класса PropertyPath? и http://iist.googlecode.com/svn/trunk/TP/QuickChartsWPF/BindingEvaluator.cs), но не удалось обновить исходный код. ценность. Я также пытался использовать BindingExpression.UpdateSource, но это тоже не удалось.

Я рассмотрел различные предложения по использованию отражения для этого. Является ли рефлексия способом идти или есть какой-то существующий механизм, который я могу использовать для достижения того, что я пытаюсь сделать?

Спасибо!


person Michael Andersson    schedule 04.11.2014    source источник
comment
класса или структуры - вы столкнетесь с проблемами при обновлении структур. В конечном итоге вы обновите коробочную копию исходного экземпляра структуры; ваши изменения не будут распространяться обратно в первоисточник.   -  person Mike Strobel    schedule 04.11.2014
comment
Да, я знаю, я уже столкнулся с этой проблемой :) . К сожалению, я ничего не могу с этим поделать. Я собираюсь найти способ заставить его работать, если не автоматически, то вручную.   -  person Michael Andersson    schedule 04.11.2014
comment
Сделать что работать? Вы не сможете обновлять структуры, если не сможете загрузить адрес оригинала. Структуры просто не ведут себя так, как это делают классы, и единственный способ, которым вы сможете обновлять произвольно вложенные значения структур, — это какое-то неприятное генерирование IL во время выполнения, и если структура выставляется свойством, вы облажались. Не используйте структуры для изменяемых данных.   -  person Mike Strobel    schedule 04.11.2014