好吧,我试图了解System.Linq.Dynamic
dll中的表达式解析器是如何工作的,但逻辑有点模糊。 ParseExpression()
调用了ParseLogicalOr()
,这个调用ParseLogicalEnd()
依次调用...等等,请您就哪里开始提供一些建议?
答案 0 :(得分:1)
它基本上是在寻找每种类型的表达方式。奇怪的是,它调用降低优先级的方法,每个方法首先调用具有次高优先级的方法。
Or
的优先级最低,因此会调用And
,其中下一个最低,调用Comparison
,调用Add
,依此类推,直至到达{{} 1}}。
理解这样的代码的最好方法是调试它。在解决方案中包含源代码,然后使用几个不同的表达式创建一个小型测试应用程序,从简单开始,变得更加复杂。然后逐步完成每一个直到你理解整个事情。你这样做后就会明白。