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

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

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

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

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();
        }
Что сказано в документации по этому поводу, так это то, что необходимо описать класс, где будут field, property или Function, затем этот класс подключить к Evaluator`у и можно будет парсить выражения, которые содержат переменные описанные в этом классе:
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)
Как мне изменить MyClass, чтобы там появились возможность создавать переменные, которые содержаться в словаре? Заранее Спасибо. п.с. если что-то пояснил не четко, то могу уточнить не понятные места.

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

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);

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы