Я пишу что-то со вкусом Enumerable.Where
, что принимает предикат вида Func<T, bool>
.Если базовый T
реализует INotifyPropertyChanged
, я бы хотел быть более умным в отношении переоценки предиката.
Я подумываю изменить его на Expression<Func<T, bool>>
, а затемдерево выражений, чтобы узнать, какие свойства используются в предикате.Тогда я могу сделать так, чтобы мой обработчик PropertyChanged
стал немного более интеллектуальным.
Мой вопрос: возможно ли это?Если предикат простой (например, x => x.Age > 18
), то, похоже, в Expression
есть все, что мне нужно.Существуют ли сценарии, в которых я не смогу увидеть, на какие свойства ссылаются?