Expression.Invoke Expression.Invoke Expression.Invoke Method

定義

InvocationExpression を作成します。Creates an InvocationExpression.

オーバーロード

Invoke(Expression, Expression[]) Invoke(Expression, Expression[]) Invoke(Expression, Expression[])

引数式のリストにデリゲートまたはラムダ式を適用する InvocationExpression を作成します。Creates an InvocationExpression that applies a delegate or lambda expression to a list of argument expressions.

Invoke(Expression, IEnumerable<Expression>) Invoke(Expression, IEnumerable<Expression>) Invoke(Expression, IEnumerable<Expression>)

引数式のリストにデリゲートまたはラムダ式を適用する InvocationExpression を作成します。Creates an InvocationExpression that applies a delegate or lambda expression to a list of argument expressions.

Invoke(Expression, Expression[]) Invoke(Expression, Expression[]) Invoke(Expression, Expression[])

引数式のリストにデリゲートまたはラムダ式を適用する InvocationExpression を作成します。Creates an InvocationExpression that applies a delegate or lambda expression to a list of argument expressions.

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);
static member Invoke : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.InvocationExpression

パラメーター

expression
Expression Expression Expression

適用するデリゲートまたはラムダ式を表す ExpressionAn Expression that represents the delegate or lambda expression to be applied.

arguments
Expression[]

デリゲートまたはラムダ式が適用される引数を表す Expression オブジェクトの配列。An array of Expression objects that represent the arguments that the delegate or lambda expression is applied to.

戻り値

指定された引数に、指定されたデリゲートまたはラムダ式を適用する InvocationExpressionAn InvocationExpression that applies the specified delegate or lambda expression to the provided arguments.

例外

expressionnullです。expression is null.

expression.Type はデリゲート型または Expression<TDelegate> を表しません。expression.Type does not represent a delegate type or an Expression<TDelegate>.

または-or- arguments の要素の Type プロパティは、expression によって表されるデリゲートの対応するパラメーターの型に代入できません。The Type property of an element of arguments is not assignable to the type of the corresponding parameter of the delegate represented by expression.

arguments に、expression により表されるデリゲートのパラメーターのリストと同じ数の要素が格納されていません。arguments does not contain the same number of elements as the list of parameters for the delegate represented by expression.

次の例では、使用する方法、Invoke(Expression, Expression[])を作成する方法、InvocationExpression指定された引数でラムダ式の呼び出しを表します。The following example demonstrates how to use the Invoke(Expression, Expression[]) method to create an InvocationExpression that represents the invocation of a lambda expression with specified arguments.

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します。入力します。The Type property of the resulting InvocationExpression represents the return type of the delegate that is represented by expression.Type.

ArgumentsプロパティInvocationExpression空場合argumentsnullThe Arguments property of the resulting InvocationExpression is empty if arguments is null. それ以外の場合と同じ要素が含まれているargumentsこれらの一部を除くExpressionオブジェクトは、引用符で囲まれたします。Otherwise, it contains the same elements as arguments except that some of these Expression objects may be quoted.

注意

によって表されるデリゲートの対応するパラメーターの場合にのみ、要素を引用がexpressionの種類はExpressionします。An element will be quoted only if the corresponding parameter of the delegate represented by expression is of type Expression. 要素にラップする手段を引用符で囲む、Quoteノード。Quoting means the element is wrapped in a Quote node. 見つかったノードが、UnaryExpressionOperandプロパティは、要素のargumentsします。The resulting node is a UnaryExpression whose Operand property is the element of arguments.

Invoke(Expression, IEnumerable<Expression>) Invoke(Expression, IEnumerable<Expression>) Invoke(Expression, IEnumerable<Expression>)

引数式のリストにデリゲートまたはラムダ式を適用する InvocationExpression を作成します。Creates an InvocationExpression that applies a delegate or lambda expression to a list of argument expressions.

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

パラメーター

expression
Expression Expression Expression

適用するデリゲートまたはラムダ式を表す ExpressionAn Expression that represents the delegate or lambda expression to be applied to.

arguments
IEnumerable<Expression>

デリゲートまたはラムダ式が適用される引数を表す IEnumerable<T> オブジェクトを格納している ExpressionAn IEnumerable<T> that contains Expression objects that represent the arguments that the delegate or lambda expression is applied to.

戻り値

指定された引数に、指定されたデリゲートまたはラムダ式を適用する InvocationExpressionAn InvocationExpression that applies the specified delegate or lambda expression to the provided arguments.

例外

expressionnullです。expression is null.

expression.Type はデリゲート型または Expression<TDelegate> を表しません。expression.Type does not represent a delegate type or an Expression<TDelegate>.

または-or- arguments の要素の Type プロパティは、expression によって表されるデリゲートの対応するパラメーターの型に代入できません。The Type property of an element of arguments is not assignable to the type of the corresponding parameter of the delegate represented by expression.

arguments に、expression により表されるデリゲートのパラメーターのリストと同じ数の要素が格納されていません。arguments does not contain the same number of elements as the list of parameters for the delegate represented by expression.

次の例では、使用する方法、Invoke(Expression, Expression[])を作成する方法、InvocationExpression指定された引数でラムダ式の呼び出しを表します。The following example demonstrates how to use the Invoke(Expression, Expression[]) method to create an InvocationExpression that represents the invocation of a lambda expression with specified arguments.

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します。入力します。The Type property of the resulting InvocationExpression represents the return type of the delegate that is represented by expression.Type.

ArgumentsプロパティInvocationExpression空場合argumentsnullThe Arguments property of the resulting InvocationExpression is empty if arguments is null. それ以外の場合と同じ要素が含まれているargumentsこれらの一部を除くExpressionオブジェクトは、引用符で囲まれたします。Otherwise, it contains the same elements as arguments except that some of these Expression objects may be quoted.

注意

によって表されるデリゲートの対応するパラメーターの場合にのみ、要素を引用がexpressionの種類はExpressionします。An element will be quoted only if the corresponding parameter of the delegate represented by expression is of type Expression. 要素にラップする手段を引用符で囲む、Quoteノード。Quoting means the element is wrapped in a Quote node. 見つかったノードが、UnaryExpressionOperandプロパティは、要素のargumentsします。The resulting node is a UnaryExpression whose Operand property is the element of arguments.

適用対象