Обратиться к переменной в библиотеке по имени - 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д