我不确定这是否是典型的stackoverflow问题,但我正在开发一个应用程序,我应该不断检查某些条件(例如,如果某个变量的值超过阈值)。条件可以随时更改,最好从代码外部更改。
人们建议我应该使用表达式解析器,但我仍然不明白他们为.NET提供的基本数学运算提供了什么优势。
你推荐一个好的.NET表达式解析器吗?
答案 0 :(得分:0)
我认为你需要动态LINQ。您可以将条件作为字符串传递。
这是一篇关于ScottGu的博客文章:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
我发现了类似的问题:Dynamic WHERE clause in LINQ
答案 1 :(得分:0)
表达式解析器将提供更大的灵活性。你的表达式可以用字符串写成公式,它们可以是应用程序数据而不是带有编码的类/方法/等等。
你可以这样做:
// 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;
但我不知道所有这些增加的复杂性是否真的在你的情况下得到回报。如果你只有一些简单的表达式,那么它可能有点过分。