RednaxelaFX 发表于 2013-1-27 05:02:14

LINQ与DLR的Expression tree(1):简介LINQ与Expression tree

(Disclaimer:如果需要转载请先与我联系;文中图片请不要直接链接
作者:RednaxelaFX at rednaxelafx.iteye.com)

系列文章:
LINQ与DLR的Expression tree(1): 简介LINQ与Expression tree
LINQ与DLR的Expression tree(2): 简介DLR
LINQ与DLR的Expression tree(3): LINQ与DLR及另外两个库的AST对比
LINQ与DLR的Expression tree(4): 创建静态类型的LINQ表达式树节点
LINQ与DLR的Expression tree(5): 用lambda表达式表示常见控制结构

以前在这边也发过关于LINQ的帖,不过并没有涉及比较深入的部分。之前的这篇:使用lambda expression来动态获取delegate,然后用Cecil注入代码(1)并不是没有下文了,而是在短短的时间内情况发生了许多变化,使得一些原本的想法有机会以更简单的方式来完成。接下来的一段时间我会发一些与LINQ、DLR等相关的帖,探讨它们与动态代码生成、动态类型代码等的关系,也将会继续讨论通过它们来进行依赖注入的话题。

关于这个“树”的叫法……LINQ里的表达式树有官方文档就叫Expression tree,但DLR中相应的语法树却没有什么固定的正式叫法,有时候叫做DLR AST,有时候叫DLR tree。本文(以及接下来的文章)都将使用DLR tree来称呼DLR中的语法树。

LINQ与Expression tree

那么,先简单的说明LINQ与Expression tree的关系。LINQ(Language-INtegrated Query)是.NET Framework 3.5新引入的技术,使得对数据集合的操作能够以统一的API实现。其中,.NET Framework自带的LINQ实现有LINQ-to-Objects、LINQ-to-DataSet、LINQ-to-SQL、LINQ-to-XML等实现。它依赖于.NET Framework 3.5引入的另外几项技术,包括扩展方法(extension method)、lambda表达式(lambda expression)、匿名类型(anonymous type)、自动实现的属性(auto-implemented property)、局部变量类型推导(local variable type inference)等。表达式树(Expression tree)则是LINQ本身的重要组成部分之一。

引用中文MSDN上的文档:
<div class="quote_title">引用
页: [1]
查看完整版本: LINQ与DLR的Expression tree(1):简介LINQ与Expression tree