通过


Expression.Invoke 方法

定义

重载

名称 说明
Invoke(Expression, Expression[])

创建一个 InvocationExpression 将委托或 lambda 表达式应用于参数表达式列表的表达式。

Invoke(Expression, IEnumerable<Expression>)

创建一个 InvocationExpression 将委托或 lambda 表达式应用于参数表达式列表的表达式。

Invoke(Expression, Expression[])

Source:
InvocationExpression.cs
Source:
InvocationExpression.cs
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[]

表示委托或 lambda 表达式应用于的参数的对象数组 Expression

返回

InvocationExpression将指定的委托或 lambda 表达式应用于提供的参数。

例外

expressionnull

expression.类型不表示委托类型或 Expression<TDelegate>委托类型。

-或-

Type元素的属性arguments不能分配给委托所表示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)

注解

生成的TypeInvocationExpression属性表示委托expression的返回类型。。类型。

生成的ArgumentsInvocationExpression属性为空(如果argumentsnull)。 否则,它包含的元素与其中一些Expression对象可能引用的元素arguments相同。

注释

仅当委托 expression 的相应参数的类型为类型 Expression时,才会引用元素。 引用表示元素包装在节点 Quote 中。 生成的节点是其属性为 /> 元素。

适用于

Invoke(Expression, IEnumerable<Expression>)

Source:
InvocationExpression.cs
Source:
InvocationExpression.cs
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 表达式应用于提供的参数。

例外

expressionnull

expression.类型不表示委托类型或 Expression<TDelegate>委托类型。

-或-

Type元素的属性arguments不能分配给委托所表示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)

注解

生成的TypeInvocationExpression属性表示委托expression的返回类型。。类型。

生成的ArgumentsInvocationExpression属性为空(如果argumentsnull)。 否则,它包含的元素与其中一些Expression对象可能引用的元素arguments相同。

注释

仅当委托 expression 的相应参数的类型为类型 Expression时,才会引用元素。 引用表示元素包装在节点 Quote 中。 生成的节点是其属性为 /> 元素。

适用于