2
那麼,我想了解System.Linq.Dynamic
DLL中的表達式解析器是如何工作的,但邏輯有點模糊。 ParseExpression()
調用ParseLogicalOr()
,這個又調用ParseLogicalEnd()
等等......你可以給出一些建議,從哪裏開始?System.Linq.Dynamic中的表達式解析器如何工作?
那麼,我想了解System.Linq.Dynamic
DLL中的表達式解析器是如何工作的,但邏輯有點模糊。 ParseExpression()
調用ParseLogicalOr()
,這個又調用ParseLogicalEnd()
等等......你可以給出一些建議,從哪裏開始?System.Linq.Dynamic中的表達式解析器如何工作?
它基本上是尋找每種類型的表達。奇怪的是它調用優先級降低的方法,每個方法都會首先調用次高優先級的方法。
Or
優先級最低,所以它調用And
其中有一個最低的,這就要求Comparison
,它調用Add
,依此類推,直到獲得Primary
。
理解此類代碼的最佳方式是調試它。在您的解決方案中加入源代碼,然後創建一個包含幾個不同表達式的小測試應用程序,從簡單到複雜。然後遍歷每一個,直到你理解整個事情。你這樣做後會很清楚。
恩,謝謝。這正是我在整個庫實現中沒有得到的,但我仍然想知道如何確定哪個方法具有更低或更高的優先級以及爲什麼。 –
@QuéPadre,這很令人困惑,因爲第一個方法調用在它自己處理之前依次調用第二個方法。因此,第一個稱爲Or的方法的優先級最低。 –