Expression.Invoke 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
重载
Invoke(Expression, Expression[]) |
创建一个 InvocationExpression,它将委托或 lambda 表达式应用于一个自变量表达式列表。 |
Invoke(Expression, IEnumerable<Expression>) |
创建一个 InvocationExpression,它将委托或 lambda 表达式应用于一个自变量表达式列表。 |
Invoke(Expression, Expression[])
- Source:
- InvocationExpression.cs
- Source:
- InvocationExpression.cs
- Source:
- InvocationExpression.cs
创建一个 InvocationExpression,它将委托或 lambda 表达式应用于一个自变量表达式列表。
public:
static System::Linq::Expressions::InvocationExpression ^ Invoke(System::Linq::Expressions::Expression ^ expression, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.InvocationExpression Invoke (System.Linq.Expressions.Expression expression, params System.Linq.Expressions.Expression[] arguments);
public static System.Linq.Expressions.InvocationExpression Invoke (System.Linq.Expressions.Expression expression, params System.Linq.Expressions.Expression[]? arguments);
static member Invoke : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.InvocationExpression
Public Shared Function Invoke (expression As Expression, ParamArray arguments As Expression()) As InvocationExpression
参数
- expression
- Expression
一个 Expression,它表示要应用的委托或 lambda 表达式。
- arguments
- Expression[]
Expression 对象的数组,这些对象表示要对其应用委托或 lambda 表达式的自变量。
返回
一个 InvocationExpression,它对提供的自变量应用指定的委托或 lambda 表达式。
例外
expression
为 null
。
expression
.Type 不表示委托类型或 Expression<TDelegate>。
- 或 -
arguments
的元素的 Type 属性不能赋给 expression
所表示的委托的相应参数的类型。
arguments
没有包含与 expression
所表示的委托的参数列表相同数量的元素。
示例
以下示例演示如何使用 Invoke(Expression, Expression[]) 方法创建一个 InvocationExpression 表示具有指定参数的 lambda 表达式的调用的 。
System.Linq.Expressions.Expression<Func<int, int, bool>> largeSumTest =
(num1, num2) => (num1 + num2) > 1000;
// Create an InvocationExpression that represents applying
// the arguments '539' and '281' to the lambda expression 'largeSumTest'.
System.Linq.Expressions.InvocationExpression invocationExpression =
System.Linq.Expressions.Expression.Invoke(
largeSumTest,
System.Linq.Expressions.Expression.Constant(539),
System.Linq.Expressions.Expression.Constant(281));
Console.WriteLine(invocationExpression.ToString());
// This code produces the following output:
//
// Invoke((num1, num2) => ((num1 + num2) > 1000),539,281)
Dim largeSumTest As System.Linq.Expressions.Expression(Of System.Func(Of Integer, Integer, Boolean)) = _
Function(num1, num2) (num1 + num2) > 1000
' Create an InvocationExpression that represents applying
' the arguments '539' and '281' to the lambda expression 'largeSumTest'.
Dim invocationExpression As System.Linq.Expressions.InvocationExpression = _
System.Linq.Expressions.Expression.Invoke( _
largeSumTest, _
System.Linq.Expressions.Expression.Constant(539), _
System.Linq.Expressions.Expression.Constant(281))
Console.WriteLine(invocationExpression.ToString())
' This code produces the following output:
'
' Invoke((num1, num2) => ((num1 + num2) > 1000),539,281)
注解
Type生成的 InvocationExpression 的 属性表示由 expression
表示的委托的返回类型。类型。
如果 arguments
null
为 ,则Arguments生成的 InvocationExpression 属性为空。 否则,它包含与 相同的元素 arguments
,只不过其中 Expression 一些对象可能 用引号括起来。
注意
仅当 由 expression
表示的委托的相应参数的类型为 Expression时,才会用引号括起元素。 引用表示元素包装在节点中 Quote 。 生成的节点是一个 UnaryExpression ,其 Operand 属性是 的 arguments
元素。
适用于
Invoke(Expression, IEnumerable<Expression>)
- Source:
- InvocationExpression.cs
- Source:
- InvocationExpression.cs
- Source:
- InvocationExpression.cs
创建一个 InvocationExpression,它将委托或 lambda 表达式应用于一个自变量表达式列表。
public:
static System::Linq::Expressions::InvocationExpression ^ Invoke(System::Linq::Expressions::Expression ^ expression, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.InvocationExpression Invoke (System.Linq.Expressions.Expression expression, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments);
public static System.Linq.Expressions.InvocationExpression Invoke (System.Linq.Expressions.Expression expression, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression>? arguments);
static member Invoke : System.Linq.Expressions.Expression * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.InvocationExpression
Public Shared Function Invoke (expression As Expression, arguments As IEnumerable(Of Expression)) As InvocationExpression
参数
- expression
- Expression
一个 Expression,它表示要应用的委托或 lambda 表达式。
- arguments
- IEnumerable<Expression>
一个包含 IEnumerable<T> 对象的 Expression,这些对象表示要对其应用委托或 Lambda 表达式的自变量。
返回
一个 InvocationExpression,它对提供的自变量应用指定的委托或 lambda 表达式。
例外
expression
为 null
。
expression
.Type 不表示委托类型或 Expression<TDelegate>。
- 或 -
arguments
的元素的 Type 属性不能赋给 expression
所表示的委托的相应参数的类型。
arguments
没有包含与 expression
所表示的委托的参数列表相同数量的元素。
示例
以下示例演示如何使用 Invoke(Expression, Expression[]) 方法创建一个 InvocationExpression 表示具有指定参数的 lambda 表达式的调用的 。
System.Linq.Expressions.Expression<Func<int, int, bool>> largeSumTest =
(num1, num2) => (num1 + num2) > 1000;
// Create an InvocationExpression that represents applying
// the arguments '539' and '281' to the lambda expression 'largeSumTest'.
System.Linq.Expressions.InvocationExpression invocationExpression =
System.Linq.Expressions.Expression.Invoke(
largeSumTest,
System.Linq.Expressions.Expression.Constant(539),
System.Linq.Expressions.Expression.Constant(281));
Console.WriteLine(invocationExpression.ToString());
// This code produces the following output:
//
// Invoke((num1, num2) => ((num1 + num2) > 1000),539,281)
Dim largeSumTest As System.Linq.Expressions.Expression(Of System.Func(Of Integer, Integer, Boolean)) = _
Function(num1, num2) (num1 + num2) > 1000
' Create an InvocationExpression that represents applying
' the arguments '539' and '281' to the lambda expression 'largeSumTest'.
Dim invocationExpression As System.Linq.Expressions.InvocationExpression = _
System.Linq.Expressions.Expression.Invoke( _
largeSumTest, _
System.Linq.Expressions.Expression.Constant(539), _
System.Linq.Expressions.Expression.Constant(281))
Console.WriteLine(invocationExpression.ToString())
' This code produces the following output:
'
' Invoke((num1, num2) => ((num1 + num2) > 1000),539,281)
注解
Type生成的 InvocationExpression 的 属性表示由 expression
表示的委托的返回类型。类型。
如果 arguments
null
为 ,则Arguments生成的 InvocationExpression 属性为空。 否则,它包含与 相同的元素 arguments
,只不过其中 Expression 一些对象可能 用引号括起来。
注意
仅当 由 expression
表示的委托的相应参数的类型为 Expression时,才会用引号括起元素。 引用表示元素包装在节点中 Quote 。 生成的节点是一个 UnaryExpression ,其 Operand 属性是 的 arguments
元素。