【问题标题】:Where is the DLR Expression Tree API?DLR 表达式树 API 在哪里?
【发布时间】:2014-01-21 20:57:51
【问题描述】:

可以在 System.Core.dll 程序集的 System.Linq.Expressions 命名空间中找到 Linq 表达式树。

DLR 表达式树 API 在哪个程序集和哪个命名空间中?

DLR 是否将更多语言元素作为更多表达式类添加到同一程序集和同一命名空间中?

【问题讨论】:

    标签: c# .net expression-trees dynamic-language-runtime linq-expressions


    【解决方案1】:

    在 .NET 4.0 及更高版本中,它们是一回事(DLR 使用 System.Linq.Expressions)。表达式类型比早期版本更多(异常处理、控制流、动态绑定等)。

    【讨论】:

    • 谢谢。我被这篇文章 (codeproject.com/Articles/28299/Generate-AST-for-the-DLR) 误导了,但后来我发现它是 2008 年写的。即使是 codeplex 网站 (codeplex.com/Download?ProjectName=dlr&DownloadId=246540) 上提供的与表达式树相关的 DLR 文档也没有明确声明它们使用相同的命名空间和组装。然而,对 Reflector 进行了一些研究,证实了你所说的。谢谢。
    • 只是为了给你的答案添加更多细节,这里有一个有用的链接,我为其他可能需要回答这个问题的人找到了:dlr.codeplex.com/discussions/282550
    • DLR 实际上可以针对早期的 .NET 版本进行部署,在这些情况下,新的和改进的 System.Linq.Expressions API 将包含在各种 Microsoft.Scripting 程序集中(而且,我认为,在不同的命名空间以避免与 .NET 3.x LINQ 冲突)。
    • 谢谢,迈克。这就是我在上一篇文章中链接的文章中读到的内容。直到 2011 年,DLR AST API 都在 Microsoft.Scripting.dllMicrosoft.Scripting.Core.dll 程序集中。命名空间是Microsoft.Scripting.Ast。我在上一篇文章中链接到的讨论线程来自 CodePlex 上的 DLR 网站,它甚至有一个条件编译构造来检查 .NET 框架版本并插入适当的 using 语句,就像你描述的那样。
    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2011-08-03
    相关资源
    最近更新 更多