Expression tree | Деревья выражений

Версия 8.7 от Alexandr Fokin на 2023/02/09 12:56
Предупреждение: Из соображений безопасности документ отображается в ограниченном режиме, поскольку это не текущая версия. Из-за этого могут быть расхождения и ошибки.

ExpressionTree позволяет накапливать выражения, содержащие операторы языка c#, в виде древовидной структуры. А после этого скомпилировать эту структуру в делегат.
При этом формировать и компилировать деревья выражений можно в рантайме.


Может использоваться для:
создания Generic типа с возможностью выполнять математические операции над элементами T. Например матрица <int> или <double>, в которой будет логика складывающая значения ячеек
Выполнения маппинга свойств (Как более быстрый аналог Рефлексия | Reflection)
iqueryable провайдер, формирующий запрос во внешнее хранилище (EntityFramework SQL)


Ссылки:

GoF Design Patterns | Паттерны Interpreter, Visitor

Деревья выражений в C# на примере нахождения производной (Expression Tree Visitor vs Pattern matching)
https://habr.com/ru/post/486972/

Введение в Expressions в языке C#
http://sonyks2007.blogspot.com/2014/07/expressions-c.html

Expression Tree. Просто о сложном
http://sonyks2007.blogspot.com/2014/08/expression-tree.html

Expressions в C# — impress yourself!
https://habr.com/ru/post/83169/

Принципы работы IQueryable и LINQ-провайдеров данных
https://habr.com/ru/post/256821/


Внутренние ссылки:

Дочерние страницы:
Обратные ссылки:

Не удалось выполнить макрос [velocity]. Причина: [The execution of the [velocity] script macro is not allowed in [xwiki:Разработка.NET.C#.Рантайм и типы.Expression tree | Деревья выражений.WebHome]. Check the rights of its last author or the parameters if it's rendered from another script.]. Нажмите на это сообщение для получения подробной информации.