Разбор условных выражений в строку

I ' Я ищу способ преобразования условного выражения в строку.

Лучший пример, который я могу придумать, - это 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.

EDIT : окончательный пример использования:

// 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"

EDIT 2 : Да, число может быть меньше 3 и равняться 5. Сказал вам, что у меня в голове жарко.

5
задан Lazlo 17 November 2010 в 02:03
поделиться