NET4 技术亮点剖析-金老师推荐.pptVIP

  • 5
  • 0
  • 约9.19千字
  • 约 70页
  • 2018-04-26 发布于湖北
  • 举报
NET4 技术亮点剖析-金老师推荐

动态站点对象通过CallSiteT.Create方法创建, C#编译器会为其指定一个派生自CallSiteBinder的对象(称为“动态站点绑定对象”)作为其参数。 动态站点绑定对象的主要工作是将代码中的动态表达式(本例中为d++)转换为一棵“抽象语法树(Abstract Syntax Tree,AST)”,这棵语法树被称为“DLR Tree”,扩充自.NET 3.5引入的LINQ表达式树。 将动态表达式转换为DLR表达式树的过程,称为“绑定(Bind)”,完成这一工作的对象就是“动态站点绑定对象(CallSiteBinder)”。 DLR探秘(2)——动态站点对象与绑定 * DLR探秘(3)——动态表达式的最终形式 object d = 100; object CS$0$0000 = d; //创建动态调用站点对象 if (p__Site1 == null) p__Site1 = CallSiteFuncCallSite, object, object.Create(……); //完成动态调用 d = p__Site1.Target(p__Site1, CS$0$0000); dynamic d = 100; d++; C#编译器 * 示例项目:IsDynamicSlowly 动态代码的性能问题 DLR拥有一个3级的缓存架构,最多可缓存100个动态调用的解析

文档评论(0)

1亿VIP精品文档

相关文档