gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:48:33 26 4
gpt4 key购买 nike

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

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

注意:我不是在谈论 lambda 表达式。我说的是 Expression< T > 以及所有与它相关并从中产生的东西。

谢谢。

最佳答案

Programming Microsoft Linq(ISBN 13:978-0-7356-2400-9 或 ISBN 10:0-7356-2400-3)的第 11 章(内部表达式树)和第 12 章(扩展 Linq)对于我。我没有读过 Jons 的书,但他是一个优秀的人并且解释得很好,所以我认为他的报道也会很好。

另一个很好的资源是 Bart De Smet's blog

此外,请关注 MSDN,构建 Simple Linq to Database 的示例代码(作者 Pedram Rezaei)即将获得 Doco 大约 40 页的解释。

对于表达式树来说,一个非常非常有用的资源实际上我认为它是一个必须拥有的Expression Tree Visualiser调试工具。

您还应该尽可能多地了解表达式树访问者,有一个非常好的基类实现 here .

这是一些从 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;
}
...

关于c# - 深入学习 C# 表达式树的最佳资源是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/683620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com