c# - .NET 4.0 是否需要 DLR?

标签 c# .net-4.0 dynamic-language-runtime

我一直在考虑将 DLR 用于我的玩具语言,但我有点困惑。如果 .NET 4.0 有 LINQ 表达式树、动态对象和“动态”类型,那么我们真的还需要 DLR 吗? DLR 提供了什么可以让我作为语言开发人员的生活更轻松

--- 编辑 ----

让我更好地解释一下我的问题。在 codeplex (dlr.codeplex.com) 上找到的 DLR 项目,是否还需要它?这个 DLR 项目的所有功能都集成到 .NET 4 中了吗?或者在 DLR 中还有什么有值(value)的东西有待发现?

最佳答案

在 DLR 的开发过程中,我们将其分为两部分 - 内层和外层。内层由调用站点缓存、扩展表达式树和元对象协议(protocol)组成。所有这些都旨在并已添加到 .NET 4.0。

外层由托管 API、表达式树解释器、COM 互操作支持、用于调用 .NET 方法的可自定义重载解析器、用于大多数 DLR 操作的默认绑定(bind)器以及许多其他各种帮助器组成。这些都没有附带 .NET 框架,但仍然对您有用。在 .NET 4.0 上使用它时,它依赖于随 .NET 4.0 一起提供的 DLR API。

外层也分为两部分 - 托管 API (Microsoft.Scripting.dll) 和其他所有内容 (Microsoft.Dynamic.dll)。如果您希望人们能够像托管 IronPython 和 IronRuby 一样托管您的语言,则可以将 DLR 托管 API 作为目标。您可以使用 Microsoft.Dynamic.dll 或只是从中提取有用的代码片段,而不是重新发明轮子。无论哪种情况,如果您想要最新版本,您都需要查看 IronPython/IronRuby 网站,因为 Microsoft 不再积极开发外层组件。

关于c# - .NET 4.0 是否需要 DLR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6740749/

相关文章:

c# - 为什么 Visual Studio 将新创建的数组键入为可空?

c# - 是否有 .NET 方法来获取 Entity Framework 连接字符串的数据源?

.net - Entity Framework 4 通过 WCF 进行 LINQ to Entities 查询

wcf - 我可以将连接字符串与 WCF 中的终结点相关联吗?

c# - 如何引用从 IronRuby 添加到 ScriptScope 的变量?

c# - 如何在 .Net 4.0 中将 DLR 与 MEF 一起使用?

c# - 关于 DLR (.NET 4.0 beta 1) 的最佳信息来源是什么?

c# - 字符串只包含一组给定的字符

c# - 泛型中的协方差 : Creating a Generic List with a Bounded Wildcard

c# - Monogame - 从曲线绘制自动生成的内容