需要.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(); }
有了这个,您可以创建自定义公式解释器引擎。