次の方法で共有


Expression.Invoke メソッド

定義

InvocationExpression を作成します。

オーバーロード

名前 説明
Invoke(Expression, Expression[])

デリゲート式またはラムダ式を引数式の一覧に適用する InvocationExpression を作成します。

Invoke(Expression, IEnumerable<Expression>)

デリゲート式またはラムダ式を引数式の一覧に適用する InvocationExpression を作成します。

Invoke(Expression, Expression[])

ソース:
InvocationExpression.cs
ソース:
InvocationExpression.cs
ソース:
InvocationExpression.cs
ソース:
InvocationExpression.cs
ソース:
InvocationExpression.cs

デリゲート式またはラムダ式を引数式の一覧に適用する InvocationExpression を作成します。

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

arguments
Expression[]

デリゲート式またはラムダ式が適用される引数を表す Expression オブジェクトの配列。

戻り値

指定したデリゲートまたはラムダ式を指定された引数に適用する InvocationExpression

例外

expressionnullです。

expression.型は、デリゲート型または Expression<TDelegate>を表しません。

-又は-

argumentsの要素のTypeプロパティは、expressionによって表されるデリゲートの対応するパラメーターの型に割り当てできません。

arguments には、 expressionで表されるデリゲートのパラメーターの一覧と同じ数の要素が含まれていません。

次の例では、 Invoke(Expression, Expression[]) メソッドを使用して、指定した引数を持つラムダ式の呼び出しを表す InvocationExpression を作成する方法を示します。

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)

注釈

結果のInvocationExpressionType プロパティは、expressionによって表されるデリゲートの戻り値の型を表します。型。

argumentsnullされている場合、結果のInvocationExpressionArgumentsプロパティは空です。 それ以外の場合は、これらのExpressionオブジェクトの一部を引用符で囲む場合を除き、argumentsと同じ要素が含まれます。

要素は、 expression によって表されるデリゲートの対応するパラメーターが Expression型の場合にのみ引用符で囲まれます。 引用符は、要素が Quote ノードにラップされていることを意味します。 結果のノードは、Operand プロパティがargumentsの要素であるUnaryExpressionです。

適用対象

Invoke(Expression, IEnumerable<Expression>)

ソース:
InvocationExpression.cs
ソース:
InvocationExpression.cs
ソース:
InvocationExpression.cs
ソース:
InvocationExpression.cs
ソース:
InvocationExpression.cs

デリゲート式またはラムダ式を引数式の一覧に適用する InvocationExpression を作成します。

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

arguments
IEnumerable<Expression>

デリゲート式またはラムダ式が適用される引数を表すExpressionオブジェクトを含むIEnumerable<T>

戻り値

指定したデリゲートまたはラムダ式を指定された引数に適用する InvocationExpression

例外

expressionnullです。

expression.型は、デリゲート型または Expression<TDelegate>を表しません。

-又は-

argumentsの要素のTypeプロパティは、expressionによって表されるデリゲートの対応するパラメーターの型に割り当てできません。

arguments には、 expressionで表されるデリゲートのパラメーターの一覧と同じ数の要素が含まれていません。

次の例では、 Invoke(Expression, Expression[]) メソッドを使用して、指定した引数を持つラムダ式の呼び出しを表す InvocationExpression を作成する方法を示します。

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)

注釈

結果のInvocationExpressionType プロパティは、expressionによって表されるデリゲートの戻り値の型を表します。型。

argumentsnullされている場合、結果のInvocationExpressionArgumentsプロパティは空です。 それ以外の場合は、これらのExpressionオブジェクトの一部を引用符で囲む場合を除き、argumentsと同じ要素が含まれます。

要素は、 expression によって表されるデリゲートの対応するパラメーターが Expression型の場合にのみ引用符で囲まれます。 引用符は、要素が Quote ノードにラップされていることを意味します。 結果のノードは、Operand プロパティがargumentsの要素であるUnaryExpressionです。

適用対象