Я ищу способ парсинга условного выражения в строку.
Лучший пример, который я могу вспомнить, это LINQ-to-SQL. Он использует ExpressionVisitors для форматирования предложений «Где». Пример:
from a in b where a.x == 5 && a.y < 3 select a
Это переведет в следующую строку (приблизительно, MSSQL для меня не актуален):
"SELECT * FROM b WHERE x = 5 AND y < 3"
Из того, что я прочитал, это было сделано с помощью класса ExpressionVisitor, как описано в этой статье: http://blogs.msdn.com/b/mattwar/archive/2007/07/31/linq-building-an-iqueryable-provider-part-ii.aspx
Теперь проблема в том, что я не использую LINQ, но мне нужны именно эти функции. Есть ли способ разбора такого состояния? Я готов сделать что-нибудь с рефлексией, делегатами, лямбдами и т. Д.
Честно говоря, я не думаю, что это возможно, но мой мозг немного прожарен (читай: было бы хорошо, если вопрос нелепый), поэтому я подумал, что с тем же успехом могу дать S / O попытка.
РЕДАКТИРОВАТЬ : пример окончательного использования:
// Usage:
foo.Bar(foo => foo.X == 5 && foo.Y < 3)
// Ideal string output (variable name (foo) is not needed):
"foo.X == 5 && foo.Y < 3"
РЕДАКТИРОВАТЬ 2 : Да, число может быть меньше 3 и равно 5. Сказал, что мой мозг жарен.