摘要:
一、ConstantExpression:表示具有常量值的表达式。因为表达式应用过程中,参数据多是 Expressions 类型,算是对常量值的一种包装吧。 ConstantExpression使用比较简单,如Expression constantExpr = Expression.Constant(100);二、MemberExpression:表示访问字段或属性。相对来说也是一个比较简单的表达式了,主要是对 字段或属性 的包装using System;using System.Collections.Generic;using System.Linq;using System.Linq.. 阅读全文
摘要:
一、ConditionalExpression:表达式 生成如 IIF((a == b), "a和b相等", "a与b不相等") 式子。使用: ParameterExpression aiP1 = Expression.Parameter(typeof(int), "a"); //(1) ParameterExpression aiP2 = Expression.Parameter(typeof(int), "b"); ParameterExpression aiP3 = Expression.Parameter( 阅读全文
摘要:
DynamicExpression:表示动态操作。这个网上可见的资料少得可怜,但想到MVC和第三方的动态语言能在NET运行。好奇的倒腾了下先声明两个类(有相同的方法和字段,但不是继承于同一接口的类),设想是动态调用它们的方法和字段。 class AiTestD { public string Name = "你好!这是 AiTestD"; public int Id = 123; public static string AiTest(string ai1, string ai2) { ... 阅读全文
摘要:
一、DebugInfoExpression:发出或清除调试信息的序列点。 这允许调试器在调试时突出显示正确的源代码。 static void Main(string[] args) { var asm = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName("foo"), System.Reflection.Emit.AssemblyBuilderAccess.RunAndSave); var mod = asm.DefineDynamicModul... 阅读全文
摘要:
一、BlockExpression类:表式一个包含可在其中定义变量的表达式序列的块。是一组表达式,类似于多个委托的 += 后的效果,其返回表达式是最后一个表达式决定。以下是BlockExpression的例子(取自官网中的例子,略改了下) //声明一个包含有4个表达式的表达式块。 BlockExpression blockExpr = Expression.Block(Expression.Call(null, typeof(Console).GetMethod("Write", new Type[] { typeof(String) }), Expre... 阅读全文
摘要:
表达式树可使用Expressions类的静态工厂方法来创建。这种用API的方式创建给予我们在编程极大的灵活性,MSDN上关于表达式的例子也不少,但在使用过程中还是会遇到许多麻烦,对有的表达式类,介绍得不是太清楚。这里把一些常见的表达示类的使用整理了下。BinaryExpression类: 是表示包含二元运算符的表达式。 比如构建形如 (100+88)是个典型的 a+b 式的二元计算,表达式代码如下BinaryExpression binaryexp = Expression.MakeBinary (ExpressionType.Add, Expression... 阅读全文