Expression.Call Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает объект MethodCallExpression.
Перегрузки
Call(MethodInfo, Expression, Expression, Expression, Expression, Expression) |
Создает выражение MethodCallExpression, представляющее вызов статического метода, принимающего пять аргументов. |
Call(Expression, MethodInfo, Expression, Expression, Expression) |
Создает выражение MethodCallExpression, представляющее вызов метода, принимающего три аргумента. |
Call(Type, String, Type[], Expression[]) |
Создает MethodCallExpression, представляющий вызов метода |
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, представляющее вызов метода |
Call(MethodInfo, Expression) |
Создает выражение MethodCallExpression, представляющее вызов метода |
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
Значение свойства Object — null
.
Применяется к
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
. Значение свойства Object — null
.
Применяется к
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.