Прочитать на английском

Поделиться через


Expression.Invoke Метод

Определение

Создает InvocationExpression.

Перегрузки

Invoke(Expression, Expression[])

Создает выражение InvocationExpression, применяющее делегат или лямбда-выражение к списку выражений аргумента.

Invoke(Expression, IEnumerable<Expression>)

Создает выражение InvocationExpression, применяющее делегат или лямбда-выражение к списку выражений аргумента.

Invoke(Expression, Expression[])

Исходный код:
InvocationExpression.cs
Исходный код:
InvocationExpression.cs
Исходный код:
InvocationExpression.cs

Создает выражение InvocationExpression, применяющее делегат или лямбда-выражение к списку выражений аргумента.

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);

Параметры

expression
Expression

Выражение Expression, представляющее делегат или лямбда-выражение для применения.

arguments
Expression[]

Массив объектов Expression, представляющих аргументы, к которым применяется делегат или лямбда-выражение.

Возвращаемое значение

Выражение InvocationExpression, которое применяет заданный делегат или лямбда-выражение к предоставленным аргументам.

Исключения

expression имеет значение null.

Тип expression.Type не представляет тип делегата или Expression<TDelegate>.

-или-

Свойство Type элемента arguments нельзя назначить для типа соответствующего параметра делегата, представленного параметром 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)

Комментарии

Свойство Type результирующего InvocationExpression представляет тип возвращаемого значения делегата, представленного . expression Тип.

Свойство Arguments результирующего InvocationExpression объекта пусто, если arguments имеет значение null. В противном случае он содержит те же элементы, что и arguments за исключением того, что некоторые из этих Expression объектов могут быть заключены в кавычки.

Примечание

Элемент будет содержаться в кавычках, только если соответствующий параметр делегата, представленный , expression имеет тип Expression. Кавыкание означает, что элемент заключен в Quote узел. Результирующий узел является , UnaryExpression свойство которого Operand является элементом arguments.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Invoke(Expression, IEnumerable<Expression>)

Исходный код:
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);

Параметры

expression
Expression

Выражение Expression, представляющее делегат или лямбда-выражение для применения.

arguments
IEnumerable<Expression>

Интерфейс IEnumerable<T>, содержащий объекты Expression, представляющие аргументы, к которым применяется делегат или лямбда-выражение.

Возвращаемое значение

Выражение InvocationExpression, которое применяет заданный делегат или лямбда-выражение к предоставленным аргументам.

Исключения

expression имеет значение null.

Тип expression.Type не представляет тип делегата или Expression<TDelegate>.

-или-

Свойство Type элемента arguments нельзя назначить для типа соответствующего параметра делегата, представленного параметром 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)

Комментарии

Свойство Type результирующего InvocationExpression представляет тип возвращаемого значения делегата, представленного . expression Тип.

Свойство Arguments результирующего InvocationExpression объекта пусто, если arguments имеет значение null. В противном случае он содержит те же элементы, что и arguments за исключением того, что некоторые из этих Expression объектов могут быть заключены в кавычки.

Примечание

Элемент будет содержаться в кавычках, только если соответствующий параметр делегата, представленный , expression имеет тип Expression. Кавыкание означает, что элемент заключен в Quote узел. Результирующий узел является , UnaryExpression свойство которого Operand является элементом arguments.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0