跟随.NET 4.0脚步.docx

跟随.NET 4.0脚步.docx

ID:32004294

大小:609.01 KB

页数:18页

时间:2019-01-30

跟随.NET 4.0脚步.docx_第1页
跟随.NET 4.0脚步.docx_第2页
跟随.NET 4.0脚步.docx_第3页
跟随.NET 4.0脚步.docx_第4页
跟随.NET 4.0脚步.docx_第5页
资源描述:

《跟随.NET 4.0脚步.docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、dynamic:用于生成一个动态的类型,在代码中可以通过不同的实例化类来变成不同的对象,例如:注:对于dynamic类型有两个限制。动态对象不支持扩展方法,匿名函数(Lambda表达式)也不能用作动态方法调用的参数,因此LINQ不能用于动态对象。大多数LINQ调用都是扩展方法,而Lambda表达式用作这些扩展方法的参数。dynamic实质:C#编译器做了很多工作,以支持动态类型。在生成的代码中,会看到对System.Runtime.CompilerServices.CallSite和System.Runtime.Compi

2、lerServices.CallSiteBinder类的引用。CallSite是在运行期间处理查找操作的类型。在运行期间调用动态对象时,必须找到该对象,看看其成员是否存在。CallSite会缓存这个信息,这样查找操作就不需要重复执行。没有这个过程,循环结构的性能就有问题。CallSite完成了成员查找操作后,就调用CallSiteBinder()方法。它从CallSite中提取信息,并生成表达式树,来表示绑定器绑定的操作。显然这需要做许多工作。优化非常复杂的操作时需要格外小心。显然,使用dynamic类型是有用的,但它是有

3、代价的。dynamicVSobject:很多情况下,初见dynamic会觉得和System.object有很多表现上的相似性。然而,System.object毕竟是静态类型;而dynamic要解决的是对动态对象的绑定。例如一个反射对象、一个DOM实例、一个COM对象或者一个来自IronRuby语言或其他语言的对象。DLRScriptRuntime:假定能给应用程序添加脚本编辑功能,并给脚本传入数值和从脚本传出数值,使应用程序可以利用脚本完成工作。这些都是在应用程序中包含DLR的ScriptRuntime而提供的功能。目前,

4、IronRuby、IronPython和JavaScript都支持包含在应用程序中的脚本语言。有了ScriptRuntime,就可以执行存储在文件中的代码段或完整的脚本。可以选择合适的语言引擎,或者让DLR确定使用什么引擎。脚本可以在自己的应用程序域或者在当前的应用程序域中创建。不仅可以给脚本传入数值并从脚本中传出数值,还可以在脚本中调用在动态对象上创建的方法。下面是一个Windows客户端应用程序,它也可以是一个大型Web应用程序或任何其他应用程序。下图显示了这个应用程序的样例。该应用程序提取所购买的物品数量和物品的总价

5、,并根据所选的单选按钮使用某个折扣。在实际的应用程序中,系统使用略微复杂的方式确定要使用的折扣,但对于本例,单选按钮就足够了。下面是计算折扣的代码:第一部分仅确定要应用折扣的脚本AmountDisc.py或CoundDisc.py。AmountDisc.py根据购买的金额计算折扣。能打折的最低购买金额是$25.00.如果购买金额小于这个值,就不计算折扣,否则就使用2.5%的折扣率。CountDisc.py根据购买的物品数量计算折扣:在这个Python脚本中,购买的物品数量必须大于5,才能给总价应用10%的折扣率。下一部分是

6、启动ScriptRuntime环境。这需要执行4个特定的步骤:创建ScriptRuntime对象、设置合适的ScriptEngine和创建ScriptSource,以及创建ScriptScope。ScriptRuntime对象是起点,也是包含ScriptRuntime的基础。它拥有包含环境的全局状态。ScriptRuntime对象使用CreateFromConfiguration()静态方法创建。app.config如下所示:这段代码定义了“Microsoft.scripting”的一部分,设置了IronPython语言引

7、擎的几个属性。接着,从ScriptRuntime中获取一个对ScriptEngine的引用。在本例中,指定需要Python引擎,但ScriptRuntime可以自己确定这一点,因为脚本的扩展名是py。ScriptRuntime完成了执行脚本代码的工作。执行文件或代码段中的脚本有几种方法。ScriptEngine还提供了ScriptSource和ScriptScope。ScriptSource对象允许访问脚本,它表示脚本的源代码。有了它,就可以操作脚本的源代码。从磁盘上加载它,逐行解析它,甚至把脚本编译到CompiledCo

8、de对象中。如果多次执行同一个脚本,这就很方便。ScriptScope对象实际上是一个名称空间。要给脚本传入值或从脚本传出值,应把一个变量绑定到ScriptScope上。本例调用SetVariable方法给Python脚本传入prodCount变量和amt变量。它们是totalItems文本框和tota

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。