共享一個從字符串轉 Lambda 表達式的類(1)


記得在古老的 2.0 時代,如果想要不重新編譯動態更改邏輯,有兩種方式:第一種是插件式編程,第二種是使用 System.CodeDom.Compiler 空間下的動態編譯功能。兩種思路的核心思路差不多,都是實現接口,進而創建實例操作的。或許,還有第三種方式,恕我孤陋寡聞。

 

然而,時代在進步,總會出現一些新的技術替換。在進入 3.0 之后,Lambda 表達式的出現,給我們一些新的思路,我們應該可以將這樣的字符串【p => p.FirstName + p.LastName】轉換為 Lambda 表達式樹或者其編譯后的委托,算是第二種方式的一種進階吧。這恰恰是我在接下來的一系列的文章中,將要展示給大家的東西,希望大家能喜歡。

 

在這第一篇文章中,我說下思路吧。

  1. 分析字符串【p => p.FirstName + p.LastName】並轉換為一組 symbol 集合。
  2. 傳遞目標 LambdaExpression 包含的委托類型到分析類中。
  3. 根據 LambdaExpression 規則遞歸分析集合中的每一個 symbol 。
  4. 返回分析得到的 LambdaExpression 表達式或編譯后的委托。

 

這樣,你就可以根據委托這種后綁定的數據形式,做任何你想要的事情了。關於第一種的插件式編程,在完成了這個系列之后,我會共享一個高效、輕量的 DI 類庫,和這個系列組合起來,形成一個真正可用的微型框架。在這里先吊吊大家的胃口,希望不要噴我才好。敬禮,呵呵。

 

最后,我的原始思路來源於咱園子里的朱才博主,我將要發表的一系列文章正是來源於此,不過是將其剖析了一遍而已,謝謝朱才


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM