我一直在考虑将 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/