Обратиться к переменной в библиотеке по имени - C#

Узнай цену своей работы

Формулировка задачи:

Помогите разобраться с этой библиотекой. Суть проблемы: Есть

Dictionary<string, double>

, где содержаться сведения о переменных, к примеру: "var1", 100.5 "var2", 200.0 "var3", 20.5 Мне необходимо, что эта библиотека восприняла мои переменные, которые в словаре содержатся. Привожу код, который хотелось бы чтобы заработал:
Листинг программы
  1. public class MyClass
  2. {
  3. public MyClass()
  4. {
  5. }
  6. }
  7. public static void Main()
  8. {
  9. Dictionary<string, double> variables = new Dictionary<string, double>();
  10. variables.Add("var1", 100.0);
  11. variables.Add("var2", 200.0);
  12. variables.Add("var3", 300.0);
  13. variables.Add("var4", 400.0);
  14. variables.Add("var5", 500.0);
  15. Evaluator ev = new Evaluator(eParserSyntax.cSharp);
  16. ev.AddEnvironmentFunctions(new MyClass()); // вот тут "подключается" класс
  17. opCode formula = ev.Parse("var5-var1*var2");// тут уже вылетает, т.к. не парсер не знает переменных
  18. object res = formula.value;
  19. string result = Evaluator.ConvertToString(res);
  20. Console.WriteLine(result);
  21. Console.ReadKey();
  22. }
Что сказано в документации по этому поводу, так это то, что необходимо описать класс, где будут field, property или Function, затем этот класс подключить к Evaluator`у и можно будет парсить выражения, которые содержат переменные описанные в этом классе:
Листинг программы
  1. Public Class class1
  2. Public field1 As Double = 2.3
  3. Public Function method2() As Double
  4. Return 3.4
  5. End Function
  6. Public ReadOnly Property prop3() As Integer
  7. Get
  8. Return 4.5
  9. End Get
  10. End Property
  11. End Class
  12.  
  13. Dim ev As New Eval3.Evaluator
  14. ev.AddEnvironmentFunctions(New class1)
  15. MsgBox(ev.Parse("field1*method2*prop3").value.ToString)
Как мне изменить MyClass, чтобы там появились возможность создавать переменные, которые содержаться в словаре? Заранее Спасибо. п.с. если что-то пояснил не четко, то могу уточнить не понятные места.

Решение задачи: «Обратиться к переменной в библиотеке по имени»

textual
Листинг программы
  1. // Преобразуем исходную строку в скомпилированный вид
  2. PreparedExpression preparedExpression = ToolsHelper.Parser.Parse("-4+5.5*sin(1/3)*(2+5)");
  3. CompiledExpression compiledExpression = ToolsHelper.Compiler.Compile(preparedExpression);
  4. // Создаем список переменных, который будет использован калькулятором при вычислении
  5. // В данном примере он пуст, поскольку в исходном выражении нет переменных
  6. List<VariableValue> variables = new List<VariableValue>();
  7. // Получаем результат вычисления функции
  8. double res = ToolsHelper.Calculator.Calculate(compiledExpression, variables);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы