ASP.NET对Dynamic Language Runtime(DLR)的支持



在ASP.NET的下一个版本当中,将可能开始支持Dynamic Language(动态语言),微软针对DLR支持最早出现的场合是Silverlight, 接着是ASP.NET Futures release,如果读者有安装VS 2005+ASP.NET Futures,则会看到在新增网站项目当中,出现了下面画面:

ASP.NET对Dynamic Language Runtime(DLR)的支持


当您选择了Managed Jscript之后(它是 ASP.NET最新支持的两种动态语言之一),您会发现建立出来的项目是完全相同的:

ASP.NET对Dynamic Language Runtime(DLR)的支持

那这样所谓的“动态语言”到底和传统的C# 或是VB有何差别呢?

说“动态语言”似乎很高深,其实说穿了就是Script类型的语言,也就是执行方式是 “解译式”而非“编译式”,这类语言的好处是,可以通过代码动态产生代码并且再加以执行,概念很简单但是意义却很重大。

举一个简单的例子,请参考上图中的画面,我在表单上放置两个TextBox,和一个Button,并且编写下面的代码:
function Button1_Click(sender, e)
{
TextBox2.Text = eval(TextBox1.Text).toString();
}
请注意这段代码是Managed Jscript,因此扩展名为.jsx:

ASP.NET对Dynamic Language Runtime(DLR)的支持

请注意我在第一个TextBox当中所输入的是“运算式(也可以是代码,而非单纯的数值)”:

ASP.NET对Dynamic Language Runtime(DLR)的支持


通过
TextBox2.Text = eval(TextBox1.Text).toString();

eval指令,将会执行TextBox1中的运算式,再把结果传入textBox2。
从上面的范例你会发现,通过DLR,我们可以用代码来产生(并执行)代码,实现动态运算的效果。
以上范例代码请点选这里下载 (执行前请务必先安装ASP.NET 2.0+ASP.NET Futures Release)