在 .NET 中使用表达式分析器

本文关键字:表达式 分析器 NET | 更新日期: 2023-09-27 17:56:13

我不确定这是否是一个典型的 stackoverflow 问题,但我正在开发一个应用程序,我应该不断检查一些条件(例如,如果某个变量的值超过阈值)。条件可以随时更改,最好是从代码外部更改。

人们建议我应该使用表达式解析器,但我仍然不明白它们比 .NET 提供的基本数学运算有什么优势。

是否推荐一个好的 .NET 表达式分析器?

在 .NET 中使用表达式分析器

我认为你需要动态LINQ。您可以将条件作为字符串传递。

这是ScottGu的一篇博客文章:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

我通过一个类似的问题找到了这一点:LINQ 中的动态 WHERE 子句

表达式解析器将提供更大的灵活性。您的表达式可以写成字符串中的公式器,它们可以是应用程序数据,而不是哈编码的类/方法/其他任何东西。

您可以执行以下操作:

// Assign an action to an expression given as a string
ExpressionObserver.Add("(a+b+c)/2 > x-y", () => { DoSomething(); });

或:

// Replace the old expression by something written by the user in the UI
someExpressionActionAssignment.Expression = MyLineEdit1.Text;

但我不知道所有这些增加的复杂性是否真的在你的情况下得到回报。如果你只有几个简单的表达式,那么它可能有点矫枉过正。