2

好吧,我试图掌握System.Linq.Dynamicdll 中的表达式解析器是如何工作的,但逻辑有点模糊。ParseExpression()打电话ParseLogicalOr(),这个依次打电话ParseLogicalEnd()等等......你能否就从哪里开始提供一些建议?

4

1 回答 1

1

它基本上是在寻找每种类型的表达式。奇怪的是它以递减的优先级调用方法,每个方法首先调用具有次高优先级的方法。

Or具有最低优先级,因此它调用具有次低优先级的,And调用Comparison,调用Add,依此类推,直到到达Primary

理解这样的代码的最好方法是调试它。在您的解决方案中包含源代码,然后使用几个不同的表达式创建一个小型测试应用程序,从简单开始逐渐变得复杂。然后逐一介绍,直到你了解整个事情。做完之后就清楚了。

于 2013-08-09T02:19:42.030 回答