(1)Add方法:
创建一个BinaryExpression的算法,额外不需要溢出检测.
public static BinaryExpression Add(
Expression left,
Expression right
)
(2)AddChecked方法:
创建一个BinaryExpression的算法,额外有溢出检测.
public static BinaryExpression AddChecked(
Expression left,
Expression right
)
(3)Bind 方法
创建一个MemberAssignment呈现一个域或属性的初始化.
public static MemberAssignment Bind(
MemberInfo member,
Expression expression
)
(3)Call Method
调用一个MethodCallExpression.
public static MethodCallExpression Call(
Expression instance,
MethodInfo method
)
(4)Constant Method
创建一个有Value属性值的ConstantExpression.
public static ConstantExpression Constant(
Object value
)
(5)Convert Method
创建一个UnaryExpression.
public static UnaryExpression Convert(
Expression expression,
Type type
)
(6)ElementInit方法
创建一个ElementInit.给第二个参数为IEnumerable(T)
public static ElementInit ElementInit(
MethodInfo addMethod,
IEnumerable<Expression> arguments
)
(7)GetActionType
创建一个Type对象表示一个泛性的System.Action委托的类型
public static Type GetActionType(
params Type[] typeArgs
)
(8)GetFuncType方法
创建一个Type对象呈现一个泛性的System.Func委托的类型.
public static Type GetFuncType(
params Type[] typeArgs
)
(9)GreaterThan
创建一个表示与被比较数字更大的BinaryExpression.
(10)Invoke Method
创建一个InvocationExpression.
public static InvocationExpression Invoke(
Expression expression,
IEnumerable<Expression> arguments
)
返回值
类型为System.Linq.Expressions.InvocationExpression;
一个已经有NodeType属性等于Invoke 和Expression和Arguments属性的值的InvocationExpression.
注意:
InvocationExpression最终结果的Type属性表示返回委托的类型是expression.Type;
如果arguments是Null,InvocationExpression最终结果Arguments属性是空.其他情况,它包括同一个元素的arguments以外的Expression objects被引用.
下面事例是使用Invoke(Expression,Expression[])方法创建一个InvocationExpression表示指定了arguments的lambda expression的invocation.
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
(11)Expression.Lambda(TDelegate) Generic Method (Expression, IEnumerable(ParameterExpression))
创建一个Expression(TDelegate),在编译时委托类型就能被知道.
public static Expression<TDelegate> Lambda<TDelegate>(
Expression body,
IEnumerable<ParameterExpression> parameters
)
类型参数:
TDelegate:委托类型;
参数:
body:类型为System.Linq.Expressions.Expression.与Expression类中设置的Body属性相等.
parameters:类型为System.Collections.Generic.IEnumerable(ParameterExpression)
一个IEnumerable(T)包括使用Parameters集合中的ParameterExpression对象.
返回值:
类型为System.Linq.Expressions.Expression(TDelegate)
返回一个有的NodeType属性等于Lambda和Body和Parameters属性的值的Expression(TDelegate).
注意:
委托类型TDelegate的参数的个数等于元素参数的个数.
这里的参数的元素必须参考在body中的parameter expressions.
最终结果对象的类型属性表示类型为TDelegate.如果参数是null,最终结果对象参数属性是一个空(empty)集合.
(12)MakeUnary Method
创建一个UnaryExpression,给一个操作数,调用相应的factory method.
public static UnaryExpression MakeUnary(
ExpressionType unaryType,
Expression operand,
Type type
)
(13)MemberInit Method
创建一个MemberInitExpression.
public static MemberInitExpression MemberInit(
NewExpression newExpression,
IEnumerable<MemberBinding> bindings
)
返回值:
类型为:System.Linq.Expressions.MemberInitExpression
一个已经有NodeType属性等于MemberInit 和NewExpression和Bindings属性的值的MemberInitExpression.
注意:
MemberInitExpression的最终结果的Type属性等于newExpression属性的类型.
事例:
下面事例怎样使用MemberInit(NewExpression, array<MemberBinding>[])方法去创建一个MemberInitExpression再去表示初始化一个新对象的两个成员.
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)