Обратиться к переменной в библиотеке по имени - C#
Формулировка задачи:
Помогите разобраться с этой библиотекой.
Суть проблемы:
Есть Что сказано в документации по этому поводу, так это то, что необходимо описать класс, где будут field, property или Function, затем этот класс подключить к Evaluator`у и можно будет парсить выражения, которые содержат переменные описанные в этом классе:
Как мне изменить MyClass, чтобы там появились возможность создавать переменные, которые содержаться в словаре?
Заранее Спасибо.
п.с. если что-то пояснил не четко, то могу уточнить не понятные места.
Dictionary<string, double>
, где содержаться сведения о переменных, к примеру: "var1", 100.5 "var2", 200.0 "var3", 20.5 Мне необходимо, что эта библиотека восприняла мои переменные, которые в словаре содержатся. Привожу код, который хотелось бы чтобы заработал:public class MyClass { public MyClass() { } } public static void Main() { Dictionary<string, double> variables = new Dictionary<string, double>(); variables.Add("var1", 100.0); variables.Add("var2", 200.0); variables.Add("var3", 300.0); variables.Add("var4", 400.0); variables.Add("var5", 500.0); Evaluator ev = new Evaluator(eParserSyntax.cSharp); ev.AddEnvironmentFunctions(new MyClass()); // вот тут "подключается" класс opCode formula = ev.Parse("var5-var1*var2");// тут уже вылетает, т.к. не парсер не знает переменных object res = formula.value; string result = Evaluator.ConvertToString(res); Console.WriteLine(result); Console.ReadKey(); }
Public Class class1 Public field1 As Double = 2.3 Public Function method2() As Double Return 3.4 End Function Public ReadOnly Property prop3() As Integer Get Return 4.5 End Get End Property End Class Dim ev As New Eval3.Evaluator ev.AddEnvironmentFunctions(New class1) MsgBox(ev.Parse("field1*method2*prop3").value.ToString)
Решение задачи: «Обратиться к переменной в библиотеке по имени»
textual
Листинг программы
// Преобразуем исходную строку в скомпилированный вид PreparedExpression preparedExpression = ToolsHelper.Parser.Parse("-4+5.5*sin(1/3)*(2+5)"); CompiledExpression compiledExpression = ToolsHelper.Compiler.Compile(preparedExpression); // Создаем список переменных, который будет использован калькулятором при вычислении // В данном примере он пуст, поскольку в исходном выражении нет переменных List<VariableValue> variables = new List<VariableValue>(); // Получаем результат вычисления функции double res = ToolsHelper.Calculator.Calculate(compiledExpression, variables);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д