Скажем, у меня есть такое выражение:
Expression<Predicate<T>> exp
Если я назначу следующее выражение:
a => a.First() != 0
а затем я вызываю exp.ToString()
. Я получу именно то, что я передал, это прекрасно, но, предположим, мы хотим изменить имя, которое мы используем для 'a', с чем-то другим, как мы можем это сделать?
Замена строк не будет выполняться во всех случаях (она работает в приведенном выше примере, но что, если параметр был назван "i", например?)
Возможно ли иметь только замену имени параметра, время выполнения, не влияя на семантическое выражение?
UPDATE @PhilKlein отлично работает, но требует фреймворка 4. Но если нам нужно настроить таргетинг на среду 3.5, мы можем использовать класс Matt Warren, просто изменив из защищенного на публичный метод Visit.