簡體   English   中英

深入學習C#表達式樹的最佳資源是什么?

[英]What is the best resource for learning C# expression trees in depth?

當我第一次輸入這個問題時,我這樣做是為了找到重復的問題,確信有人必須已經問過這個問題。 我的計划是遵循這些欺騙鏈接而不是發布此問題。 但據我所知,這個問題以前沒有被問過......它沒有出現在“相關問題”列表中。

為了深入了解C#中的表達式樹,你找到了哪些最好的資源(文章,書籍,博客文章等)? 我一直對他們的能力感到驚訝,現在我正處在我說的地方,“好吧,足夠的驚喜。我現在想停下來獲得這些東西的博士學位。” 我正在尋找系統,有條理地涵蓋功能的材料,然后詳細介紹了如何使用它們。

注意:我不是在談論lambda表達式。 我在談論Expression <T>以及隨之而來的所有事情。

謝謝。

編程Microsoft Linq(ISBN 13:978-0-7356-2400-9或ISBN 10:0-7356-2400-3)的第11章(內部表達樹)和第12章(擴展Linq)對我來說非常寶貴。 我沒有讀過Jons的書,但他是一個優秀的人並且解釋得很好,所以我認為他的報道也會很好。

另一個很好的資源是Bart De Smet的博客

另外,請關注MSDN,構建Simple Linq to Database (由Pedram Rezaei編寫)的示例代碼即將獲得大約40頁的Doco解釋它。

對於Expression Tree來說,一個真正非常有用的資源實際上我認為它必須具備 Expression Tree Visualiser調試工具。

你也應該學習盡可能多地了解表達式樹游客,有一個相當不錯的基類inplementation 這里

以下是從該Visitor類派生的一些示例代碼,用於進行一些調試(我基於我提到的書中的一些示例代碼)prependIndent方法調用只是一個字符串的擴展方法,在每個縮進處放置一個“ - ”水平。

  internal class DebugDisplayTree : ExpressionVisitor
  {
    private int indentLevel = 0;

    protected override System.Linq.Expressions.Expression Visit(Expression exp)
    {
      if (exp != null)
      {
        Trace.WriteLine(string.Format("{0} : {1} ", exp.NodeType, exp.GetType().ToString()).PrependIndent(indentLevel));
      }
      indentLevel++;
      Expression result = base.Visit(exp);
      indentLevel--;
      return result;
    }
    ...

我並不認為它們是全面的,但我的博客上有很多Expression帖子。 如果你是英國人,我也將在5月份在DDD西南部 (和昨晚 ,但為時已晚;-p)舉辦關於Expression的會議。 我可以發布幻燈片和相關文章中的一些鏈接,如果你想...不幸的是,一個pptx打算說話很少做出明智的獨立閱讀。

其他一些閱讀(不是來自博客):

(以及在microsoft.public.dotnet.languages.csharp上的一大堆帖子 - 嘗試搜索:+ expression -regex - “正則表達式”

學習計划。 表達式使用與lambda演算相同的原則,因此可以為您提供更好的洞察力。

或者,你可以看看DLR,這是一個類似但不那么優雅的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM