Expression.Call 方法

定義

多載

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

建立 MethodCallExpression,代表呼叫採用五個引數的靜態方法。

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

建立 MethodCallExpression,代表呼叫採用三個引數的方法。

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

建立 MethodCallExpression,代表透過呼叫適當的 Factory 方法來呼叫 static (在 Visual Basic 中則為 Shared) 方法。

Call(MethodInfo, Expression, Expression, Expression)

建立 MethodCallExpression,代表呼叫採用三個引數的靜態方法。

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

建立 MethodCallExpression,代表透過呼叫適當的 Factory 方法來呼叫方法。

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 (在 Visual Basic 中則為 Shared) 方法。

Call(MethodInfo, Expression)

建立 MethodCallExpression,代表呼叫採用一個引數的 static (在 Visual Basic 中則為 Shared) 方法。

Call(MethodInfo, IEnumerable<Expression>)

建立 MethodCallExpression,代表呼叫靜態方法 (在 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,且 ObjectMethod 屬性設定為指定的值。

例外狀況

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。 (對靜態方法 (在 Visual Basic 中為共用方法) 傳遞 Null)。

method
MethodInfo

表示目標方法的 MethodInfo

arg0
Expression

表示第一個引數的 Expression

arg1
Expression

表示第二個引數的 Expression

arg2
Expression

表示第三個引數的 Expression

傳回

MethodCallExpression,其 NodeType 屬性等於 Call,且 ObjectMethod 屬性設定為指定的值。

適用於

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

來源:
MethodCallExpression.cs
來源:
MethodCallExpression.cs
來源:
MethodCallExpression.cs

建立 MethodCallExpression,代表透過呼叫適當的 Factory 方法來呼叫 static (在 Visual Basic 中則為 Shared) 方法。

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 (在 Visual Basic 中則為 Shared) 方法的型別。

methodName
String

方法的名稱。

typeArguments
Type[]

Type 物件的陣列,這些物件可指定泛型方法的類型參數。 當 methodName 指定非泛型方法時,這個引數應該為 Null。

arguments
Expression[]

Expression 物件的陣列,這個陣列代表方法的引數。

傳回

MethodCallExpression,其 NodeType 屬性等於 CallMethod 屬性設定為 MethodInfo,代表指定的 static (在 Visual Basic 中則為 Shared) 方法,且 Arguments 屬性設定為指定的引數。

例外狀況

typemethodNamenull

methodName 或其基底類型中找不到名稱為 typeArguments、類型參數符合 arguments,且參數類型符合 type 的方法。

-或-

methodName 或其基底類型中找到多個名稱為 typeArguments、類型參數符合 arguments,且參數類型符合 type 的方法。

備註

產生的 TypeMethodCallExpression 屬性等於 所表示之方法的傳回型別 methodNameObject 屬性為 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,且 ObjectMethod 屬性設定為指定的值。

例外狀況

method 為 null。

適用於

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

來源:
MethodCallExpression.cs
來源:
MethodCallExpression.cs
來源:
MethodCallExpression.cs

建立 MethodCallExpression,代表透過呼叫適當的 Factory 方法來呼叫方法。

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 屬性等於 CallObject 屬性等於 instanceMethod 設定為代表指定執行個體方法的 MethodInfo,且 Arguments 設定為指定的引數。

例外狀況

instancemethodNamenull

methodName.Type 或其基底類型中找不到名稱為 typeArguments、其類型參數符合 arguments,且參數類型符合 instance 的方法。

-或-

methodName.Type 或其基底類型中找到多個名稱為 typeArguments、類型參數符合 arguments,且參數類型符合 instance 的方法。

備註

產生的 TypeMethodCallExpression 屬性等於 所表示之方法的傳回型別 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。 (對靜態方法 (在 Visual Basic 中為共用方法) 傳遞 Null)。

method
MethodInfo

表示目標方法的 MethodInfo

arg0
Expression

表示第一個引數的 Expression

arg1
Expression

表示第二個引數的 Expression

傳回

MethodCallExpression,其 NodeType 屬性等於 Call,且 ObjectMethod 屬性設定為指定的值。

範例

下列程式碼範例示範如何建立運算式,以呼叫具有兩個引數的實例方法。

// 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,且 ObjectMethod 屬性設定為指定的值。

例外狀況

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 (在 Visual Basic 中為 static) 方法會傳遞 Shared)。

method
MethodInfo

要將 MethodInfo 屬性設定為與之相等的 Method

arguments
Expression[]

用以填入 Expression 集合之 Arguments 物件的陣列。

傳回

MethodCallExpression,其 NodeType 屬性等於 Call,且 ObjectMethodArguments 屬性設定為指定的值。

例外狀況

methodnull

-或-

instancenullmethod 則代表執行個體方法。

-或-

arguments 不是 null,且它的一或多個子項目為 null

instance.Type 無法指派給 method 所代表之方法的宣告類型。

-或-

arguments 中的項目數不等於 method所代表之方法的參數數目。

-或-

arguments 的一或多個項目無法指派給 method 所代表之方法的對應參數。

備註

若要在 Visual Basic) 方法中表示對 (的呼叫 static ,請在呼叫這個方法時傳入 nullinstance 參數,或改為呼叫 CallShared

如果 method 表示實例方法,則 Typeinstance 屬性必須可指派給 所 method 表示方法的宣告類型。

如果 arguments 不是 null ,它必須具有與 所 method 表示方法的參數數目相同的專案數目。 中的每個 arguments 元素不得為 null ,而且必須可指派給 的對應參數 method ,可能是 在引號之後。

注意

只有在對應的方法參數的類型 Expression 為 時,才會加上引號。 引號表示元素會包裝在節點中 Quote 。 產生的節點是 , UnaryExpressionOperand 屬性是 的 arguments 元素。

如果 為 , Arguments 則產生的 MethodCallExpression 屬性是空 null 的。 arguments 否則,它包含與 相同的元素 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 (在 Visual Basic 中為 static) 方法傳遞 Shared)。

method
MethodInfo

要將 MethodInfo 屬性設定為與之相等的 Method

arguments
IEnumerable<Expression>

IEnumerable<T>,其中包含用以填入 Expression 集合的 Arguments 物件。

傳回

MethodCallExpression,其 NodeType 屬性等於 Call,且 ObjectMethodArguments 屬性設定為指定的值。

例外狀況

methodnull

-或-

instancenullmethod 則代表執行個體方法。

instance.Type 無法指派給 method 所代表之方法的宣告類型。

-或-

arguments 中的項目數不等於 method所代表之方法的參數數目。

-或-

arguments 的一或多個項目無法指派給 method 所代表之方法的對應參數。

備註

若要在 Visual Basic) 方法中表示對 (的呼叫 static ,請在呼叫這個方法時傳入 nullinstance 參數,或改為呼叫 CallShared

如果 method 表示實例方法,則 Typeinstance 屬性必須可指派給 所 method 表示方法的宣告類型。

如果 arguments 不是 null ,它必須具有與 所 method 表示方法的參數數目相同的專案數目。 中的每個 arguments 元素不得為 null ,而且必須可指派給 的對應參數 method ,可能是 在引號之後。

注意

只有在對應的方法參數的類型 Expression 為 時,才會加上引號。 引號表示元素會包裝在節點中 Quote 。 產生的節點是 , UnaryExpressionOperand 屬性是 的 arguments 元素。

如果 為 , Arguments 則產生的 MethodCallExpression 屬性是空 null 的。 arguments 否則,它包含與 相同的元素 arguments ,其中有些可能會加上引號。

Type產生的 MethodCallExpression 屬性等於 所 method 表示方法的傳回型別。

適用於

Call(MethodInfo, Expression[])

來源:
MethodCallExpression.cs
來源:
MethodCallExpression.cs
來源:
MethodCallExpression.cs

建立 MethodCallExpression,代表呼叫有引數的 static (在 Visual Basic 中則為 Shared) 方法。

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 (在 Visual Basic 中則為 Shared) 方法,將 Method 屬性設定為與之相等。

arguments
Expression[]

用以填入 Expression 集合之 Arguments 物件的陣列。

傳回

MethodCallExpression,其 NodeType 屬性等於 Call,且 MethodArguments 屬性設定為指定的值。

例外狀況

methodnull

arguments 中的項目數不等於 method所代表之方法的參數數目。

-或-

arguments 的一或多個項目無法指派給 method 所代表之方法的對應參數。

備註

如果 arguments 不是 null ,它必須具有與 所 method 表示方法的參數數目相同的專案數目。 中的每個 arguments 元素不得為 null ,而且必須可指派給 的對應參數 method ,可能是 在引號之後。

注意

只有在對應的方法參數的類型 Expression 為 時,才會加上引號。 引號表示元素會包裝在節點中 Quote 。 產生的節點是 , UnaryExpressionOperand 屬性是 的 arguments 元素。

如果 為 , Arguments 則產生的 MethodCallExpression 屬性是空 null 的。 arguments 否則,它包含與 相同的元素 arguments ,其中有些可能會加上引號。

Type產生的 MethodCallExpression 屬性等於 所 method 表示方法的傳回型別。 Object 屬性為 null

適用於

Call(MethodInfo, Expression)

來源:
MethodCallExpression.cs
來源:
MethodCallExpression.cs
來源:
MethodCallExpression.cs

建立 MethodCallExpression,代表呼叫採用一個引數的 static (在 Visual Basic 中則為 Shared) 方法。

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,且 ObjectMethod 屬性設定為指定的值。

例外狀況

method 為 null。

範例

下列範例示範如何建立運算式,以在 Visual Basic) 方法中呼叫 static 採用一個引數的 (Shared

// 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,代表呼叫靜態方法 (在 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,且 ObjectMethod 屬性設定為指定的值。

適用於

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 (在 Visual Basic 中為 static) 方法會傳遞 Shared)。

method
MethodInfo

要將 MethodInfo 屬性設定為與之相等的 Method

傳回

MethodCallExpression,其 NodeType 屬性等於 Call,且 ObjectMethod 屬性設定為指定的值。

例外狀況

methodnull

-或-

instancenullmethod 則代表執行個體方法。

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

備註

若要在 Visual Basic) 方法中表示對 (Shared 的呼叫 static ,請在呼叫此方法時傳入 nullinstance 參數。

如果 method 表示實例方法,則 Typeinstance 屬性必須可指派給 所 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,且 ObjectMethod 屬性設定為指定的值。

例外狀況

method 為 null。

適用於