”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
O>какие еще варианты использования вам пригодились на практике
Можно для AOP использовать.
Т.е. извлекать из expression информацию о вызываемом методе и аргументах.
И дальше анализировать ее, реализуя вещи вроде security, caching, throttling, calls logging, etc.
У Сергея Теплякова в блоге
был хороший пример про кэширование
Мы используем когда надо динамически построить запросы для linq2db, или динамически посмтроить кастомный компаратор или мэппер и скомпилировать их в делегат, или что-то простое типа GetPropertyName().