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

2024-04-12

当我第一次输入这个问题时,我这样做是为了找到重复的问题,我确信一定有人已经问过这个问题。我的计划是关注那些重复的链接,而不是发布这个问题。但据我所知,这个问题以前没有被问过……它没有出现在“相关问题”列表中。

您找到了哪些用于深入了解 C# 表达式树的最佳资源(文章、书籍、博客文章等)?我一直对他们的能力感到惊讶,现在我想说,“好吧,足够的惊喜了。我想现在就停下来,获得这些事情的博士学位。”我正在寻找能够系统、有条理地涵盖这些功能的材料,然后详细介绍您可以使用它们做什么。

注意:我不是在谈论 lambda 表达式。我说的是 Expression 以及所有与之相关并由其产生的事物。

Thanks.


《Programming Microsoft Linq》(ISBN 13:978-0-7356-2400-9 或 ISBN 10:0-7356-2400-3)的第 11 章(表达式树内部)和第 12 章(扩展 Linq)对我来说非常宝贵。我没有读过乔恩的书,但他是一个很有素质的人,并且解释得很好,所以我认为他的报道也很好。

另一个很棒的资源是巴特·德·斯梅特的博客 http://community.bartdesmet.net/blogs/bart/archive/tags/LINQ/default.aspx

另外,请密切关注 MSDN,这是用于构建简单的 Linq 到数据库 http://code.msdn.microsoft.com/SimpleLingToDatabase/Release/ProjectReleases.aspx?ReleaseId=1471(作者 Pedram Rezaei)即将收到 Doco 大约 40 页的解释。

事实上,对于表达式树来说,这是一个非常非常有用的资源,我将其视为一定有 is the 表达式树可视化工具 http://msdn.microsoft.com/en-us/library/bb397975.aspx调试工具。

您还应该尽可能多地了解表达式树访问者,有一个非常好的基类实现here http://msdn.microsoft.com/en-us/library/bb882521.aspx.

这是从该 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;
    }
    ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐