Expression Tree Introduction - 02
来源:互联网 发布:淘宝usa商城卖假货? 编辑:程序博客网 时间:2024/05/16 16:06
上一篇介绍了表达式树的一些基本用法,这里介绍下包含更复杂逻辑的表达式树。
1.判断逻辑的表达式树
LabelTarget labelBreak = Expression.Label();ParameterExpression loopIndex = Expression.Parameter(typeof(int), "index");BlockExpression block = Expression.Block( new[] { loopIndex }, // 初始化loopIndex =1 Expression.Assign(loopIndex, Expression.Constant(1)), Expression.Loop( Expression.IfThenElse( // if 的判断逻辑 Expression.LessThanOrEqual(loopIndex, Expression.Constant(10)), // 判断逻辑通过的代码 Expression.Block( Expression.Call( null, typeof(Console).GetMethod("WriteLine", new Type[] { typeof(string) }), Expression.Constant("Hello")), Expression.PostIncrementAssign(loopIndex)), // 判断不通过的代码 Expression.Break(labelBreak) ), labelBreak)); // 将我们上面的代码块表达式Expression<Action> lambdaExpression = Expression.Lambda<Action>(block);lambdaExpression.Compile().Invoke();这个表达式阅读起来有点费劲,不过仔细读一下还是比较好理解的。
2.类型判断的表达式树
TypeBinaryExpression typeBinaryExpression = Expression.TypeIs( //Expression.Constant(3), Expression.Constant("Hello"), typeof(int));Console.WriteLine(typeBinaryExpression.ToString());BlockExpression block = Expression.Block(typeBinaryExpression);Expression<Func<bool>> e = Expression.Lambda<Func<bool>>(block);Console.WriteLine(e.Compile().DynamicInvoke());这个表达式树是构建了一个类型判断的表达式,我们首先打印出表达式,然后我们调用表达式。
0 0
- Expression Tree Introduction - 02
- Expression Tree Introduction
- Expression Expression tree Expression evaluation
- Expression Tree
- Expression tree
- Expression Tree
- Expression Tree Picture
- Delegate & Expression Tree 研究
- Expression Tree揭秘
- OOD - Arithmetic Expression Tree
- .net linq expression tree
- Expression Tree Visualizer 的调用
- Expression Tree Visualizer的使用
- 初识Expression Tree of Linq
- A Simple Sample for Expression Tree
- [msdn]Expression Tree表达式目录树
- A Simple Sample for Expression Tree
- [转]Linq 之Expression Tree再思考
- 修改注册表值scancode map来屏蔽键盘上的键
- 2.一个随机生成多种颜色并获取颜色RGB值以及对应十六进制的安卓小应用
- POJ1041 John's trip(欧拉回路 + 并查集 + dfs)
- to-do
- C++ GUI QT4 编程--gotocell2 在QT5下编译出现的问题及解决
- Expression Tree Introduction - 02
- Android 使用Component跨应用程序访问
- Centos7 安装ELK
- Aap.net母版页跳转无刷新 解决方案
- Improving the way neural networks learn
- 简析 addToBackStack使用和Fragment执行流程
- 编写高质量代码(4)
- 云计算
- 欢迎使用CSDN-markdown编辑器