Оценивать динамические строковые формулы в.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/?