标签:
我们先创建一个表达式树:
下面就写Code来解析
Expression<Func<int, int, int>> expression = (a, b) => a + b; BinaryExpression body = (BinaryExpression)expression.Body; ParameterExpression left = (ParameterExpression)body.Left; ParameterExpression right = (ParameterExpression)body.Right; Console.WriteLine(expression.Body); Console.WriteLine(" 表达式左边部分: " + "{0}{4} 节点类型: {1}{4} 表达式右边部分: {2}{4} 类型: {3}{4}", left.Name, body.NodeType, right.Name, body.Type, Environment.NewLine);
输出:
(a + b)
表达式左边部分: a
节点类型: Add
表达式右边部分: b
类型: System.Int32
我们可以调用Compile()方法来生成委托对象
int res = expression.Compile()(3, 5);
这段代码会输出值8,跟本文最初声明的lambda函数的执行结果一样。
Expression参考博客:http://www.cnblogs.com/Ninputer/archive/2009/08/28/expression_tree1.html
标签:
原文地址:http://www.cnblogs.com/zuqing/p/4525831.html