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


Expression.Call Метод

Определение

Создает объект MethodCallExpression.

Перегрузки

Call(MethodInfo, Expression, Expression, Expression, Expression, Expression)

Создает выражение MethodCallExpression, представляющее вызов статического метода, принимающего пять аргументов.

Call(Expression, MethodInfo, Expression, Expression, Expression)

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

Call(Type, String, Type[], Expression[])

Создает MethodCallExpression, представляющий вызов метода static (Shared в Visual Basic), вызывая соответствующий метод фабрики.

Call(MethodInfo, Expression, Expression, Expression)

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

Call(Expression, String, Type[], Expression[])

Создает MethodCallExpression, представляющий вызов для метода, вызывая соответствующий метод фабрики.

Call(Expression, MethodInfo, Expression, Expression)

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

Call(MethodInfo, Expression, Expression, Expression, Expression)

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

Call(Expression, MethodInfo, Expression[])

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

Call(Expression, MethodInfo, IEnumerable<Expression>)

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

Call(MethodInfo, Expression[])

Создает выражение MethodCallExpression, представляющее вызов метода static (Shared в Visual Basic), принимающего аргументы.

Call(MethodInfo, Expression)

Создает выражение MethodCallExpression, представляющее вызов метода static (Shared в Visual Basic), принимающего один аргумент.

Call(MethodInfo, IEnumerable<Expression>)

Создает выражение MethodCallExpression, представляющее вызов статического метода (Shared в Visual Basic).

Call(Expression, MethodInfo)

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

Call(MethodInfo, Expression, Expression)

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

Call(MethodInfo, Expression, Expression, Expression, Expression, Expression)

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

Создает выражение MethodCallExpression, представляющее вызов статического метода, принимающего пять аргументов.

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Reflection::MethodInfo ^ method, System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1, System::Linq::Expressions::Expression ^ arg2, System::Linq::Expressions::Expression ^ arg3, System::Linq::Expressions::Expression ^ arg4);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2, System.Linq.Expressions.Expression arg3, System.Linq.Expressions.Expression arg4);
static member Call : System.Reflection.MethodInfo * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (method As MethodInfo, arg0 As Expression, arg1 As Expression, arg2 As Expression, arg3 As Expression, arg4 As Expression) As MethodCallExpression

Параметры

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.

arg0
Expression

Объект Expression, представляющий первый аргумент.

arg1
Expression

Объект Expression, представляющий второй аргумент.

arg2
Expression

Объект Expression, представляющий третий аргумент.

arg3
Expression

Объект Expression, представляющий четвертый аргумент.

arg4
Expression

Объект Expression, представляющий пятый аргумент.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

Исключения

Параметр method имеет значение null.

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

Call(Expression, MethodInfo, Expression, Expression, Expression)

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

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

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Linq::Expressions::Expression ^ instance, System::Reflection::MethodInfo ^ method, System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1, System::Linq::Expressions::Expression ^ arg2);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression instance, System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression? instance, System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2);
static member Call : System.Linq.Expressions.Expression * System.Reflection.MethodInfo * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (instance As Expression, method As MethodInfo, arg0 As Expression, arg1 As Expression, arg2 As Expression) As MethodCallExpression

Параметры

instance
Expression

Выражение Expression, указывающее экземпляр для вызова экземпляра. (Для статического метода (Shared в Visual Basic) передается NULL.)

method
MethodInfo

Объект MethodInfo, представляющий целевой метод.

arg0
Expression

Объект Expression, представляющий первый аргумент.

arg1
Expression

Объект Expression, представляющий второй аргумент.

arg2
Expression

Объект Expression, представляющий третий аргумент.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

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

Call(Type, String, Type[], Expression[])

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

Создает MethodCallExpression, представляющий вызов метода static (Shared в Visual Basic), вызывая соответствующий метод фабрики.

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(Type ^ type, System::String ^ methodName, cli::array <Type ^> ^ typeArguments, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.MethodCallExpression Call (Type type, string methodName, Type[] typeArguments, params System.Linq.Expressions.Expression[] arguments);
public static System.Linq.Expressions.MethodCallExpression Call (Type type, string methodName, Type[]? typeArguments, params System.Linq.Expressions.Expression[]? arguments);
static member Call : Type * string * Type[] * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (type As Type, methodName As String, typeArguments As Type(), ParamArray arguments As Expression()) As MethodCallExpression

Параметры

type
Type

Тип, который содержит указанный метод static (Shared в Visual Basic).

methodName
String

Имя метода.

typeArguments
Type[]

Массив объектов Type, указывающий тип параметров универсального метода. Если methodName задает неуниверсальный метод, данный аргумент должен иметь значение NULL.

arguments
Expression[]

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

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

Выражение MethodCallExpression, содержащее свойство NodeType, равное Call, свойство Method, для которого задано значение MethodInfo, представляющее указанный метод static (Shared в Visual Basic), и свойство Arguments, для которого заданы указанные аргументы.

Исключения

Параметр type или methodName имеет значение null.

Отсутствует метод с именем methodName, параметры типа которого соответствуют typeArguments и типы параметров которого arguments обнаружены в типе type или его базовых типах.

-или-

Больше одного метода с именем methodName, параметры типа которого соответствуют typeArguments, и типы параметров которого arguments обнаружены в типе type или его базовых типах.

Комментарии

Свойство Type результирующего MethodCallExpression объекта равно типу возвращаемого значения метода, обозначенного .methodName Значение свойства Objectnull.

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

Call(MethodInfo, Expression, Expression, Expression)

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

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

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Reflection::MethodInfo ^ method, System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1, System::Linq::Expressions::Expression ^ arg2);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2);
static member Call : System.Reflection.MethodInfo * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (method As MethodInfo, arg0 As Expression, arg1 As Expression, arg2 As Expression) As MethodCallExpression

Параметры

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.

arg0
Expression

Объект Expression, представляющий первый аргумент.

arg1
Expression

Объект Expression, представляющий второй аргумент.

arg2
Expression

Объект Expression, представляющий третий аргумент.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

Исключения

Параметр method имеет значение null.

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

Call(Expression, String, Type[], Expression[])

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

Создает MethodCallExpression, представляющий вызов для метода, вызывая соответствующий метод фабрики.

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Linq::Expressions::Expression ^ instance, System::String ^ methodName, cli::array <Type ^> ^ typeArguments, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression instance, string methodName, Type[] typeArguments, params System.Linq.Expressions.Expression[] arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression instance, string methodName, Type[]? typeArguments, params System.Linq.Expressions.Expression[]? arguments);
static member Call : System.Linq.Expressions.Expression * string * Type[] * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (instance As Expression, methodName As String, typeArguments As Type(), ParamArray arguments As Expression()) As MethodCallExpression

Параметры

instance
Expression

Expression, для значения свойства Type которого будет выполнен поиск определенного метода.

methodName
String

Имя метода.

typeArguments
Type[]

Массив объектов Type, указывающий тип параметров универсального метода. Если methodName задает неуниверсальный метод, данный аргумент должен иметь значение NULL.

arguments
Expression[]

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

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

Выражение MethodCallExpression, содержащее свойство NodeType, равное Call, свойство Object, равное instance, Method, для которого задано значение MethodInfo, представляющее указанный метод экземпляра, а для указанных аргументов заданы значения Arguments.

Исключения

Параметр instance или methodName имеет значение null.

Отсутствует метод с именем methodName, параметры типа которого соответствуют typeArguments и типы параметров которого arguments обнаружены в типе instance.Type или его базовых типах.

-или-

Больше одного метода с именем methodName, параметры типа которого соответствуют typeArguments, и типы параметров которого arguments обнаружены в типе instance.Type или его базовых типах.

Комментарии

Свойство Type результирующего MethodCallExpression объекта равно типу возвращаемого значения метода, обозначенного .methodName

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

Call(Expression, MethodInfo, Expression, Expression)

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

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

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Linq::Expressions::Expression ^ instance, System::Reflection::MethodInfo ^ method, System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression instance, System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression? instance, System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1);
static member Call : System.Linq.Expressions.Expression * System.Reflection.MethodInfo * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (instance As Expression, method As MethodInfo, arg0 As Expression, arg1 As Expression) As MethodCallExpression

Параметры

instance
Expression

Выражение Expression, указывающее экземпляр для вызова экземпляра. (Для статического метода (Shared в Visual Basic) передается NULL.)

method
MethodInfo

Объект MethodInfo, представляющий целевой метод.

arg0
Expression

Объект Expression, представляющий первый аргумент.

arg1
Expression

Объект Expression, представляющий второй аргумент.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

Примеры

В следующем примере кода показано, как создать выражение, которое вызывает метод экземпляра с двумя аргументами.

// Add the following directive to your file:
// using System.Linq.Expressions;
public class SampleClass
{
    public int AddIntegers(int arg1, int arg2)
    {
        return arg1 + arg2;
    }
}

static public void TestCall()
{
    // This expression represents a call to an instance method that has two arguments.
    // The first argument is an expression that creates a new object of the specified type.
    Expression callExpr = Expression.Call(
        Expression.New(typeof(SampleClass)),
        typeof(SampleClass).GetMethod("AddIntegers", new Type[] { typeof(int), typeof(int) }),
        Expression.Constant(1),
        Expression.Constant(2)
        );

    // Print out the expression.
    Console.WriteLine(callExpr.ToString());

    // The following statement first creates an expression tree,
    // then compiles it, and then executes it.
    Console.WriteLine(Expression.Lambda<Func<int>>(callExpr).Compile()());

    // This code example produces the following output:
    //
    // new SampleClass().AddIntegers(1, 2)
    // 3
}
' Add the following directive to your file:
' Imports System.Linq.Expressions  

Public Class SampleClass
    Public Function AddIntegers(ByVal arg1 As Integer, ByVal arg2 As Integer) As Integer
        Return (arg1 + arg2)
    End Function
End Class
Public Shared Sub TestCall()
    ' This expression represents a call to an instance method that has two arguments.
    ' The first argument is an expression that creates a new object of the specified type.
    Dim callExpr As Expression = Expression.Call(
        Expression.[New](GetType(SampleClass)),
        GetType(SampleClass).GetMethod("AddIntegers", New Type() {GetType(Integer), GetType(Integer)}),
        Expression.Constant(1),
        Expression.Constant(2)
      )

    ' Print the expression.
    Console.WriteLine(callExpr.ToString())

    ' The following statement first creates an expression tree,
    ' then compiles it, and then executes it.
    Console.WriteLine(Expression.Lambda(Of Func(Of Integer))(callExpr).Compile()())
End Sub

' This code example produces the following output:
'
' new SampleClass().AddIntegers(1, 2)
' 3

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

Call(MethodInfo, Expression, Expression, Expression, Expression)

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

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

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Reflection::MethodInfo ^ method, System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1, System::Linq::Expressions::Expression ^ arg2, System::Linq::Expressions::Expression ^ arg3);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1, System.Linq.Expressions.Expression arg2, System.Linq.Expressions.Expression arg3);
static member Call : System.Reflection.MethodInfo * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (method As MethodInfo, arg0 As Expression, arg1 As Expression, arg2 As Expression, arg3 As Expression) As MethodCallExpression

Параметры

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.

arg0
Expression

Объект Expression, представляющий первый аргумент.

arg1
Expression

Объект Expression, представляющий второй аргумент.

arg2
Expression

Объект Expression, представляющий третий аргумент.

arg3
Expression

Объект Expression, представляющий четвертый аргумент.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

Исключения

Параметр method имеет значение null.

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

Call(Expression, MethodInfo, Expression[])

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

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

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Linq::Expressions::Expression ^ instance, System::Reflection::MethodInfo ^ method, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression instance, System.Reflection.MethodInfo method, params System.Linq.Expressions.Expression[] arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression? instance, System.Reflection.MethodInfo method, params System.Linq.Expressions.Expression[]? arguments);
static member Call : System.Linq.Expressions.Expression * System.Reflection.MethodInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (instance As Expression, method As MethodInfo, ParamArray arguments As Expression()) As MethodCallExpression

Параметры

instance
Expression

Выражение Expression, задающее экземпляр для вызова метода экземпляра (для метода null (static в Visual Basic) передается Shared).

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.

arguments
Expression[]

Массив объектов Expression для заполнения коллекции Arguments.

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

Выражение MethodCallExpression со свойством NodeType, равным Call, и свойствами Object, Method и Arguments, для которых заданы указанные значения.

Исключения

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

-или-

Свойство instance имеет значение null, а свойство method представляет метод экземпляра.

-или-

arguments не является null и один или несколько его элементов является null.

instance.Type не может быть назначен объявляющему типу метода, представленного свойством method.

-или-

Число элементов в arguments не соответствует числу параметров метода, представленного свойством method.

-или-

Один или несколько элементов в arguments невозможно присвоить соответствующему параметру метода, представленного свойством method.

Комментарии

Чтобы представить вызов static метода (Shared в Visual Basic), передайте null параметр при instance вызове этого метода или вызовите Call вместо него.

Если method представляет метод экземпляраType, свойство instance должно быть присвоено объявляемому типу метода, представленного .method

Если arguments значение не nullравно , оно должно иметь то же количество элементов, что и количество параметров для метода, представленного method. Каждый элемент в arguments не должен быть null и должен быть назначен соответствующему параметру method, возможно, после кавыка.

Примечание

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

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

Свойство Type результирующего MethodCallExpression объекта равно типу возвращаемого значения метода, представленного method.

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

Call(Expression, MethodInfo, IEnumerable<Expression>)

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

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

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Linq::Expressions::Expression ^ instance, System::Reflection::MethodInfo ^ method, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression instance, System.Reflection.MethodInfo method, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression? instance, System.Reflection.MethodInfo method, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression>? arguments);
static member Call : System.Linq.Expressions.Expression * System.Reflection.MethodInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (instance As Expression, method As MethodInfo, arguments As IEnumerable(Of Expression)) As MethodCallExpression

Параметры

instance
Expression

Expression, чтобы задать свойство Object равным (передать null для метода static (Shared в Visual Basic).

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.

arguments
IEnumerable<Expression>

IEnumerable<T>, содержащий все объекты Expression, используемые для заполнения коллекции Arguments.

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

Выражение MethodCallExpression со свойством NodeType, равным Call, и свойствами Object, Method и Arguments, для которых заданы указанные значения.

Исключения

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

-или-

Свойство instance имеет значение null, а свойство method представляет метод экземпляра.

instance.Type не может быть назначен объявляющему типу метода, представленного свойством method.

-или-

Число элементов в arguments не соответствует числу параметров метода, представленного свойством method.

-или-

Один или несколько элементов в arguments невозможно присвоить соответствующему параметру метода, представленного свойством method.

Комментарии

Чтобы представить вызов static метода (Shared в Visual Basic), передайте null параметр при instance вызове этого метода или вызовите Call вместо него.

Если method представляет метод экземпляраType, свойство instance должно быть присвоено объявляемому типу метода, представленного .method

Если arguments значение не nullравно , оно должно иметь то же количество элементов, что и количество параметров для метода, представленного method. Каждый элемент в arguments не должен быть null и должен быть назначен соответствующему параметру method, возможно, после кавыка.

Примечание

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

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

Свойство Type результирующего MethodCallExpression объекта равно типу возвращаемого значения метода, представленного method.

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

Call(MethodInfo, Expression[])

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

Создает выражение MethodCallExpression, представляющее вызов метода static (Shared в Visual Basic), принимающего аргументы.

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Reflection::MethodInfo ^ method, ... cli::array <System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, params System.Linq.Expressions.Expression[] arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, params System.Linq.Expressions.Expression[]? arguments);
static member Call : System.Reflection.MethodInfo * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (method As MethodInfo, ParamArray arguments As Expression()) As MethodCallExpression

Параметры

method
MethodInfo

MethodInfo, представляющий метод static (Shared в Visual Basic), чтобы задать значение Method для свойства.

arguments
Expression[]

Массив объектов Expression для заполнения коллекции Arguments.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Method и Arguments, для которых заданы указанные значения.

Исключения

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

Число элементов в arguments не соответствует числу параметров метода, представленного свойством method.

-или-

Один или несколько элементов в arguments невозможно присвоить соответствующему параметру метода, представленного свойством method.

Комментарии

Если arguments значение не nullравно , оно должно иметь то же количество элементов, что и количество параметров для метода, представленного method. Каждый элемент в arguments не должен быть null и должен быть назначен соответствующему параметру method, возможно, после кавыка.

Примечание

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

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

Свойство Type результирующего MethodCallExpression объекта равно типу возвращаемого значения метода, представленного method. Значение свойства Objectnull.

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

Call(MethodInfo, Expression)

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

Создает выражение MethodCallExpression, представляющее вызов метода static (Shared в Visual Basic), принимающего один аргумент.

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Reflection::MethodInfo ^ method, System::Linq::Expressions::Expression ^ arg0);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0);
static member Call : System.Reflection.MethodInfo * System.Linq.Expressions.Expression -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (method As MethodInfo, arg0 As Expression) As MethodCallExpression

Параметры

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.

arg0
Expression

Объект Expression, представляющий первый аргумент.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

Исключения

Параметр method имеет значение null.

Примеры

В следующем примере показано, как создать выражение, которое вызывает static метод (Shared в Visual Basic), который принимает один аргумент.

// Add the following directive to your file:
// using System.Linq.Expressions;

public class SampleClass
{
    public static int Increment(int arg1)
    {
        return arg1 + 1;
    }
}

static public void TestCall()
{

    //This expression represents a call to an instance method with one argument.
    Expression callExpr = Expression.Call(
                            typeof(SampleClass).GetMethod("Increment"),
                            Expression.Constant(2)
                        );

    // Print out the expression.
    Console.WriteLine(callExpr.ToString());

    // The following statement first creates an expression tree,
    // then compiles it, and then executes it.
    Console.WriteLine(Expression.Lambda<Func<int>>(callExpr).Compile()());

    // This code example produces the following output:
    //
    // Increment(2)
    // 3
}
' Add the following directive to your file:
' Imports System.Linq.Expressions  

Public Class SampleClass
    Shared Function Increment(ByVal arg1 As Integer) As Integer
        Return arg1 + 1
    End Function
End Class
Shared Sub TestCall()
    'This expression represents a call to an instance method with one argument.
    Dim callExpr As Expression = Expression.Call(
        GetType(SampleClass).GetMethod("Increment"),
        Expression.Constant(2))

    ' Print the expression.
    Console.WriteLine(callExpr.ToString())

    ' The following statement first creates an expression tree,
    ' then compiles it, and then executes it.
    Console.WriteLine(Expression.Lambda(Of Func(Of Integer))(callExpr).Compile()())
End Sub

' This code example produces the following output:
'
' Increment(2)
' 3

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

Call(MethodInfo, IEnumerable<Expression>)

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

Создает выражение MethodCallExpression, представляющее вызов статического метода (Shared в Visual Basic).

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Reflection::MethodInfo ^ method, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> arguments);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression>? arguments);
static member Call : System.Reflection.MethodInfo * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (method As MethodInfo, arguments As IEnumerable(Of Expression)) As MethodCallExpression

Параметры

method
MethodInfo

Объект MethodInfo, представляющий целевой метод.

arguments
IEnumerable<Expression>

Коллекция выражений Expression, представляющая аргументы вызова.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

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

Call(Expression, MethodInfo)

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

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

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Linq::Expressions::Expression ^ instance, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression instance, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.MethodCallExpression Call (System.Linq.Expressions.Expression? instance, System.Reflection.MethodInfo method);
static member Call : System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (instance As Expression, method As MethodInfo) As MethodCallExpression

Параметры

instance
Expression

Выражение Expression, задающее экземпляр для вызова метода экземпляра (для метода null (static в Visual Basic) передается Shared).

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

Исключения

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

-или-

Свойство instance имеет значение null, а свойство method представляет метод экземпляра.

instance.Type не может быть назначен объявляющему типу метода, представленного свойством method.

Примеры

В следующем примере кода показано, как создать выражение, которое вызывает метод без аргументов.

// Add the following directive to your file:
// using System.Linq.Expressions;

// This expression represents a call to an instance method without arguments.
Expression callExpr = Expression.Call(
    Expression.Constant("sample string"), typeof(String).GetMethod("ToUpper", new Type[] { }));

// Print out the expression.
Console.WriteLine(callExpr.ToString());

// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda<Func<String>>(callExpr).Compile()());

// This code example produces the following output:
//
// "sample string".ToUpper
// SAMPLE STRING
' Add the following directive to your file:
' Imports System.Linq.Expressions   

' This expression represents a call to an instance method without arguments.
Dim callExpr As Expression = Expression.Call(
    Expression.Constant("sample string"), GetType(String).GetMethod("ToUpper", New Type() {}))

' Print the expression.
Console.WriteLine(callExpr.ToString())

' The following statement first creates an expression tree,
' then compiles it, and then executes it.  
Console.WriteLine(Expression.Lambda(Of Func(Of String))(callExpr).Compile()())

' This code example produces the following output:
'
' "sample string".ToUpper
' SAMPLE STRING

Комментарии

Чтобы представить вызов static метода (Shared в Visual Basic), передайте null параметр при вызове instance этого метода.

Если method представляет метод экземпляраType, свойство instance должно быть присвоено объявляемому типу метода, представленного .method

Свойство Arguments результирующего объекта MethodCallExpression пусто. Свойство Type равно типу возвращаемого значения метода, представленного .method

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

Call(MethodInfo, Expression, Expression)

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

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

public:
 static System::Linq::Expressions::MethodCallExpression ^ Call(System::Reflection::MethodInfo ^ method, System::Linq::Expressions::Expression ^ arg0, System::Linq::Expressions::Expression ^ arg1);
public static System.Linq.Expressions.MethodCallExpression Call (System.Reflection.MethodInfo method, System.Linq.Expressions.Expression arg0, System.Linq.Expressions.Expression arg1);
static member Call : System.Reflection.MethodInfo * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.MethodCallExpression
Public Shared Function Call (method As MethodInfo, arg0 As Expression, arg1 As Expression) As MethodCallExpression

Параметры

method
MethodInfo

Объект MethodInfo, который следует задать в качестве значения свойства Method.

arg0
Expression

Объект Expression, представляющий первый аргумент.

arg1
Expression

Объект Expression, представляющий второй аргумент.

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

Выражение MethodCallExpression со свойствомNodeType, равным Call, и свойствами Object и Method, для которых заданы указанные значения.

Исключения

Параметр method имеет значение null.

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