需要.Net的公式解释器

我正在寻找一个可以在C#应用程序中使用的公式解释器。 它需要能够解释这样的字符串:

max(1+2, 4) * x 

我发现编写一个快速的公式解释器(codeproject.com)几乎可以满足我的需求,但它不允许具有多个参数的函数。 我可以添加它的function,但我只是想知道这样的事情是否已经存在。

谢谢

我过去使用的一对夫妇没有问题:

  • NCalc
  • 快速轻量级表达评估器

实际上,您可以通过使用Math.Max解析和替换某些function关键字(例如max ,然后动态构建和执行公式作为C#类和方法来构建非常有效的解释器。 实际上,您将解析并包装公式并允许C#编译器解释并执行它。

因此,将您的样本公式max(1+2, 4) * x变为:

 public class MyFormula { public double calc(double x) { return Math.Max(1+2, 4) * x; } } 

您可以动态编译,然后根据链接的文章执行。 你仍然需要解析并传递x值。

很久以前在一个项目中,我不得不用公式创建一些预订,我使用的是VsaEngine。 要使用此引擎,您需要添加对Microsoft.JScript引用。 这是一个例子:

使用代码非常简单,只需替换以下公式参数:

 string formula = "x+y"; formula= formula.Replace("x","100").Replace("y","200"); string result = CalculateFormula(formula); 

这里是核心方法,CalculateFormula:

 public string CalculateFormula(string evaluationString) { VsaEngine en = VsaEngine.CreateEngine(); Object result = Eval.JScriptEvaluate(evaluationString, en); return result.ToString(); } 

有了这个,您可以创建自定义公式解释器引擎。