Tengo cuatro palabras clave de entrada predefinidas. (por ejemplo, num1, num2, etc.) En función de estas palabras clave, el usuario definirá una fórmula en un cuadro de texto. Ejemplo: num1 + num2 * num3 * (num3-num1)

Dado que esta entrada se tomará de un cuadro de texto, será una cadena. ¿Cómo puedo convertir estas palabras clave de cadena al nombre de variable y ejecutar la fórmula en mi código?

No encontré ninguna respuesta adecuada para esto en otros hilos.

Cualquier ayuda es apreciada. Gracias

-1
vinitpradhan18 15 nov. 2017 a las 00:07

2 respuestas

La mejor respuesta

Pruebe el DynamicExpresso paquete nuget - https://www.nuget.org/ paquetes / DynamicExpresso.Core /

Entonces puedes hacer algo como:

var s = "num1 + num2 * num3 * (num3-num1)";
var interpreter = new Interpreter();

int num1 = 11;
int num2 = 12;
int num3 = 13;

var parameters = new[]
{
    new Parameter("num1", num1),
    new Parameter("num2", num2),
    new Parameter("num3", num3)
};
var result = interpreter.Eval(s, parameters);

Console.WriteLine(result); // 323
0
Kevin Smith 14 nov. 2017 a las 21:16

Puede hacerlo construyendo un árbol de expresión correspondiente: https://docs.microsoft.com / es-es / dotnet / csharp / guía-de-programación / conceptos / árboles-de-expresión /

-2
samwise 14 nov. 2017 a las 21:14