Оценивая динамические строковые формулы в .NET? - PullRequest
2 голосов
/ 05 декабря 2010

Я работаю над проектом, в котором мне нужно оценить некоторые формулы в 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 ]

3 голосов
/ 05 декабря 2010

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

Взгляните на класс Linq Expression - это может помочь.

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

2 голосов
/ 05 декабря 2010

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

0 голосов
/ 05 декабря 2010

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

...