В предыдущих вопросах задавался вопрос, можно ли превратить скомпилированные делегаты в деревья выражений, например:
Вменяемые ответы в то время были:
- Это возможно, но очень сложно и нет стандартного библиотечного решения.
- Используйте отражатель!
Но, к счастью, есть некоторые очень безумные / безумно великие люди, которым нравятся вещи с обратной инженерией, и они облегчают сложные дела для всех нас.
Ясно, что можно декомпилировать IL в C #, как это делает Reflector, и поэтому вы можете в принципе вместо целевых деревьев выражений CLR 4.0 с поддержкой всех типов операторов. Это интересно, потому что не имеет значения, если встроенная в компилятор специальная поддержка Expression<>
lambdas никогда не будет расширена для поддержки построения деревьев выражений операторов в компиляторе. Решение библиотеки может заполнить пробел. Тогда у нас будет высокоуровневая отправная точка для написания аспектно-ориентированных манипуляций с кодом без необходимости связываться с необработанным IL.
Как отмечалось в ответах на вышеуказанный связанный вопрос, есть некоторые многообещающие признаки , но мне не удалось найти, если с тех пор был достигнут значительный прогресс в поиске.
Так кто-нибудь закончил эту работу или очень далеко продвинулся?
Примечание: CLR 4.0 теперь выпущен. Время для другого взгляда.