动态语言运行时 (DLR) 是一种运行时环境,它将一组适用于动态语言的服务添加到公共语言运行时 (CLR)。
借助于 DLR,可以更轻松地开发要在 .NET Framework 上运行的动态语言,而且向静态类型化语言添加动态功能也会更容易。
动态语言可以在运行时标识对象的类型,而在类似 C# 和 Visual Basic 的静态类型化语言中(当您使用 Option Explicit On 时),您必须在设计时指定对象类型。
动态语言的示例有:Lisp、Smalltalk、JavaScript、PHP、Ruby、Python、ColdFusion、Lua、Cobra 和 Groovy。
大多数动态语言都会向开发人员提供以下优点:
-
可以使用快速反馈循环(REPL 或读取-计算-打印循环)。
这样,您就可以在输入几条语句之后立即执行它们以查看结果。
-
同时支持自上而下的开发和更传统的自下而上的开发。
例如,当您使用自上而下的方法时,可以调用尚未实现的函数,然后在需要时添加基础实现。
-
更易于进行重构和代码修改操作,原因是您不必在代码中四处更改静态类型声明。
利用动态语言可以生成优秀的脚本语言。
利用新的命令和功能,客户可以轻松地扩展使用动态语言创建的应用程序。 动态语言还经常用于创建网站和测试工具、维护服务器场、开发各种实用工具以及执行数据转换。
DLR 的目的是允许动态语言系统在 .NET Framework 上运行,并为动态语言提供 .NET 互操作性。
在 Visual Studio 2010 中,DLR 将动态对象引入到 C# 和 Visual Basic 中,以便这些语言能够支持动态行为,并且可以与动态语言进行互操作。
DLR 还可帮助您创建支持动态操作的库。
例如,如果您具有一个使用 XML 或 JavaScript 对象表示法 (JSON) 对象的库,则对于使用 DLR 的语言,您的对象可以显示为动态对象。 这使库用户能够编写语法更简单且更自然的代码,以便操作对象和访问对象成员。
例如,在 C# 中,您可能会使用下面的代码来递增 XML 中的计数器值。
Scriptobj.SetProperty("Count", ((int)GetProperty("Count")) + 1);
通过使用 DLR,您可以改用下面的代码来执行相同的操作。
scriptobj.Count += 1;
与 CLR 类似,DLR 是 .NET Framework 的一部分,并随 .NET Framework 和 Visual Studio 安装包一起提供。
DLR 的开放源代码版本还可以从 CodePlex 网站下载获得。
说明
|
DLR 的开放源代码版本具有 Visual Studio 和 .NET Framework 中包含的 DLR 的所有功能。
此版本还提供对语言实现的其他支持。 有关更多信息,请参见 CodePlex 网站上的相关文档。
|
使用 DLR 开发的语言的示例包括: