当前位置:  开发笔记 > 编程语言 > 正文

深入学习C#表达式树的最佳资源是什么?

如何解决《深入学习C#表达式树的最佳资源是什么?》经验,为你挑选了3个好方法。

当我第一次输入这个问题时,我这样做是为了找到重复的问题,确信有人必须已经问过这个问题.我的计划是遵循这些欺骗链接而不是发布此问题.但据我所知,这个问题以前没有被问过......它没有出现在"相关问题"列表中.

为了深入了解C#中的表达式树,你找到了哪些最好的资源(文章,书籍,博客文章等)? 我一直对他们的能力感到惊讶,现在我正处在我说的地方,"好吧,足够的惊喜.我现在想停下来获得这些东西的博士学位." 我正在寻找系统,有条理地涵盖功能的材料,然后详细介绍了如何使用它们.

注意:我不是在谈论lambda表达式.我在谈论Expression 以及随之而来的所有事情.

谢谢.



1> Tim Jarvis..:

编程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解释它.

为表达一个非常,非常有用的资源树的,其实我也认为这是一个必须是表达式树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;
    }
    ...


重新设置可视化器 - 您也可以在一行中完成:http://marcgravell.blogspot.com/2009/03/visualizing-expressions-in-propertygrid.html

2> Marc Gravell..:

我并不认为它们是全面的,但我的博客上有很多Expression帖子.如果你是英国人,我也将在5月份在DDD西南部举行会议(昨晚,但为时已晚;-p).我可以发布幻灯片和相关文章中的一些链接,如果你想...不幸的是,一个pptx打算说话很少做出明智的独立阅读.Expression

其他一些阅读(不是来自博客):

杰森博克:遗传编程与Expression

(再次我):一般的运营商与Expression

(再次,在InfoQ上)Expression作为编译器

(以及在microsoft.public.dotnet.languages.csharp上的一大堆帖子 - 尝试搜索:+ expression -regex - "正则表达式"



3> leppie..:

学习计划.表达式使用与lambda演算相同的原则,因此可以为您提供更好的洞察力.

或者,你可以看看DLR,这是一个类似但不那么优雅的.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有