Изначально я использовал оболочку c # для muparser . Это было очень быстро. Единственное быстрое решение, которое я знаю, это exprtk . Если вы ищете другие решения, вы можете проверить тест .
Но в случае .Net вы можете использовать встроенную поддержку для компиляции кода во время выполнения. Идея состоит в том, чтобы иметь исходный файл шаблона, например, встроенный ресурс, где можно заменить формулу для оценки. Затем вы передаете этот подготовленный исходный код класса компилятору.
Базовый шаблон может выглядеть так:
public class CSCodeEvaler
{
public double EvalCode()
{
return last = Convert.ToDouble(%formula%);
}
public double last = 0;
public const double pi = Math.PI;
public const double e = Math.E;
public double sin(double value) { return Math.Sin(value); }
public double cos(double value) { return Math.Cos(value); }
public double tan(double value) { return Math.Tan(value); }
...
Обратите внимание на% формулу%, в которую будет вставлено выражение.
Для компиляции используйте класс CSharpCodeProvider. Я не хочу помещать в полный источник здесь. Но этот ответ может помочь:
После загрузки сборки в памяти вы можете создать экземпляр вашего класса и вызвать EvalCode.