Оценивать динамические строковые формулы в.NET?

Я работаю над проектом, где мне нужно оценить некоторые формулы в VB.NET. Я использую MS Script Control для оценки некоторых простых логических / математических формул.

Однако теперь я столкнулся с проблемой строковых выражений, которые устанавливают переменные в моей программе на определенные значения. Так, например, допустим, у меня есть следующее:

Dim netPrice As Decimal
Dim expressionFormula As String = "netPrice = 0"

Мне нужно иметь возможность оценить "expressionFormula" и установить для переменной netPrice значение 0. Я пробовал разные комбинации метода.AddObject в MS Script Control, но пока ничего не получалось.

Я должен упомянуть, что этот пример только для целей иллюстрации, реальный сценарий включает несколько объектов DataTable из типизированного DataSet. В конце концов, для некоторых полей в моей DataTable может потребоваться установить конкретные значения констант на основе этих динамических выражений.

Спасибо за помощь!

3 ответа

Решение

Для этого вам понадобится написать собственный анализатор и оценщик.

Посмотрите на Linq Expression класс - это может помочь.

Кроме того, в зависимости от вашего подхода, вы можете писать и компилировать динамические классы, используя CSharpCodeProvider скомпилировать ваши выражения как классы / сборки C#.

Если вам нужно обрабатывать сложные выражения, может быть, эта библиотека может быть полезна: http://flee.codeplex.com/?

Dynamic Linq - это то, что вы ищете

Другие вопросы по тегам