Максим Аршинов - Деревья выражений в enterprise-разработке

Ғылым және технология

Ближайшая конференция - DotNext 2024, 10 - 11 сентября, Москва + online
Подробности и билеты: jrg.su/x2GKnA
- -
Один из самых клевых ребят на Хабре в .NET-блоге - его публикации: habr.com/ru/users/marshinov/p...
Для большинства разработчиков использование expression tree ограничивается лямбда-выражениями в LINQ. Зачастую мы вообще не придаем значения тому, как технология работает «под капотом».
Цель доклада - продемонстрировать продвинутые техники работы с деревьями выражений:
- устранение дублирования кода в LINQ;
- метапрограмирование;
- кодогенерация;
- транспиляция;
- автоматизация тестирования.
После доклада вы будете знать, как пользоваться expression tree напрямую, какие подводные камни приготовила технология и как их обойти.

Пікірлер: 10

  • @user-bm5cn6wq6d
    @user-bm5cn6wq6d5 жыл бұрын

    Большое спасибо за доклад. Очень много полезной информации!

  • @Gregor812
    @Gregor8123 жыл бұрын

    Кажется, код со слайдов не всегда компилируется. В первых же слайдах с кешированием компилированных выражений, где ConcurrentDictionary, непонятно, каким образом у класса Expression появился метод расширения: методы расширения не могут быть объявлены в нестатическом классе или классе-дженерике (тут оба правила нарушены) + не указан this перед первым параметром метода расширения. Сначала подумал, что я чего-то не понимаю, накидал код -- он не работает (

  • @user-fd8bu6zv2t
    @user-fd8bu6zv2t3 жыл бұрын

    Он какой то программный маньячина )

  • @Aurus11
    @Aurus115 жыл бұрын

    Все это похоже на изнасилование EF query provider, который и так генерит не понятно какой sql не понятно как, но в целом интересно, автору спасибо

  • @consolednd
    @consolednd5 жыл бұрын

    Если есть swagger, то можно использовать nswag для генерации Client на .net standard

  • @ROMPJ
    @ROMPJ6 жыл бұрын

    Вопрос как приходит правило в контроллер надо дополнить вопросом как оно хранится. Если статически - то все это "служу богу абстракии ради абстракции". А если в DSL где то пользователь текстом вводит и хранит где нибудь в конфиг-табличке -- ну так и построил по этому DSL нужный Expression Tree c предикатом внутри и передал в Where (и никаких spec не надо). Вообще жутко скучно играться со всеми этими сложностями комбинирования "условий" (склейки маленьких expression в большое с перебором параметров), и смотреть на то как играются другие тоже скучно, когда можно просто построить нужный Expression Tree для предиката "с нуля". В прочем знать о такой возможности нужно. Это если я правильно понял о чем лекция в чем уверенности нет. Пересмотрю еще. А за доклад - Спасибо. Было полезно.

  • @ROMPJ
    @ROMPJ6 жыл бұрын

    Прыжок от "провайдер не может разобрать наш код" к "компилировать это медленно" потерял логическую связку.

  • @ROMPJ
    @ROMPJ6 жыл бұрын

    5:57 "есть два пакета которые это реализуют..." -- что это? Зачем компиляции делегатов нужен API ? Но за ссылки спасибо. Будем изучать.

  • @TDenis-youtube
    @TDenis-youtube5 жыл бұрын

    Видать совсем скучно мужику на работе. Ну а так интересно, конечно.

  • @ROMPJ
    @ROMPJ6 жыл бұрын

    Прикреплять валидацию через атрибуты - в рамках функционального программирования на которое настроены мозги программиста работающего с Expression Trees - это как-то неправильно. Валидацию надо встроить явно в поток вычисления.

Келесі