Оценка динамических строковых формул в .NET?
-
08-10-2019 - |
Вопрос
Я работаю над проектом, где мне нужно оценить некоторые формулы в VB.NET. Я использовал MS Script Control. Оценить некоторые из простых логических / математических формул.
Тем не менее, теперь я сейчас сталкиваюсь с рецензией строковых выражений, которые устанавливают переменные в моей программе к определенным значениям. Так, например, скажем, я получил следующее:
Dim netPrice As Decimal
Dim expressionFormula As String = "netPrice = 0"
Мне нужно быть в состоянии оценить «выразить формулу» и установить переменную NETPRICE к 0. Я пробую различные комбинации метода .addObject в контроле MS Script, но пока ничего не работал.
Я должен упомянуть, что этот пример предназначен только для иллюстрации, реальный сценарий включает в себя несколько объектов DataTable из набранного набора данных. В конце концов, некоторые поля в моем DataTable могут быть установлены на определенные постоянные значения, основанные на этих динамических выражениях.
Спасибо за помощь!
Решение
Для такого рода функциональность вам нужно будет написать свой собственный парсер и оценщик.
Посмотрите на LINQ Expression
класс - это может помочь.
Кроме того, в зависимости от вашего подхода вы можете писать и компилировать динамические классы, используя CSharpCodeProvider
Чтобы скомпилировать ваши выражения как C # классы / сборки.
Другие советы
Если вам нужно обрабатывать сложные выражения, может быть, эта библиотека может быть полезна: http://flee.codeplex.com/ ?
Динамический линьк это то, что вы ищете