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の場合 、arguments結果として得られるのプロパティは空になります。 nullThe 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の場合 、arguments結果として得られるのプロパティは空になります。 nullThe 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.

適用対象