Можно создать дерево выражений, если вы объявите его таковым.
Но возможно ли получить дерево выражений для обычного куска кода, такого как метод или метод получения свойства?
Что я пытаюсь сделать, скажем, для системы обработки заказов, у меня есть класс для позиций заказа:
class Item : Entity
{
[Cascade]
public Document document { get; set; }
public int line { get; set; }
public Product product { get; set; }
public string description { get; set; }
public decimal qty { get; set; }
public decimal price { get; set; }
public decimal net
{
get
{
return qty * price;
}
}
public VatCode vat_code { get; set; }
}
, где чистое значение равно qty * цене, поэтому я хотел бы объявить его как таковое, либо со свойством, либо с методом, а затем также иметь внутреннее представление о том, что выражение может генерировать соответствующий SQL для определения соответствующего вычисляемого значения. столбец в соответствующем представлении базы данных.
Самый очевидный способ сделать это - получить дерево выражений для метода получения свойства или метода, но я не могу найти никаких указаний, как это сделать или что это возможно. (Я нашел способ получить тело метода в виде потока байтов, но здесь это не то, что нужно.)
Если это невозможно, я полагаю, что рекомендуемым решением было бы объявить что-то вроде статического поля, являющегося деревом выражений, и скомпилировать / запустить его во время выполнения для внутреннего использования, а также для самоанализа как обычно для генерации SQL