Expression.Call 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
Call(MethodInfo, Expression, Expression, Expression, Expression, Expression)
建立 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,代表呼叫採用三個引數的方法。
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,且 Object 和 Method 屬性設定為指定的值。
適用於
Call(Type, String, Type[], Expression[])
建立 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
方法的名稱。
- arguments
- Expression[]
Expression 物件的陣列,這個陣列代表方法的引數。
傳回
MethodCallExpression,其 NodeType 屬性等於 Call、Method 屬性設定為 MethodInfo,代表指定的 static
(在 Visual Basic 中則為 Shared
) 方法,且 Arguments 屬性設定為指定的引數。
例外狀況
type
或 methodName
為 null
。
methodName
或其基底類型中找不到名稱為 typeArguments
、類型參數符合 arguments
,且參數類型符合 type
的方法。
-或-
methodName
或其基底類型中找到多個名稱為 typeArguments
、類型參數符合 arguments
,且參數類型符合 type
的方法。
備註
Type產生的 MethodCallExpression 屬性等於 所methodName
表示方法的傳回型別。 Object 屬性為 null
。
適用於
Call(MethodInfo, Expression, Expression, Expression)
建立 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,代表透過呼叫適當的 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
方法的名稱。
- arguments
- Expression[]
Expression 物件的陣列,這個陣列代表方法的引數。
傳回
MethodCallExpression,其 NodeType 屬性等於 Call、Object 屬性等於 instance
、Method 設定為代表指定執行個體方法的 MethodInfo,且 Arguments 設定為指定的引數。
例外狀況
instance
或 methodName
為 null
。
methodName
.Type 或其基底類型中找不到名稱為 typeArguments
、其類型參數符合 arguments
,且參數類型符合 instance
的方法。
-或-
methodName
.Type 或其基底類型中找到多個名稱為 typeArguments
、類型參數符合 arguments
,且參數類型符合 instance
的方法。
備註
Type產生的 MethodCallExpression 屬性等於 所methodName
表示方法的傳回型別。
適用於
Call(Expression, MethodInfo, Expression, Expression)
建立 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,且 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,代表呼叫採用四個引數的靜態方法。
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。
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,且 Object、Method 和 Arguments 屬性設定為指定的值。
例外狀況
method
為 null
。
-或-
instance
為 null
,method
則代表執行個體方法。
-或-
arguments
不是 null
,且它的一或多個子項目為 null
。
instance
.Type 無法指派給 method
所代表之方法的宣告類型。
-或-
arguments
中的項目數不等於 method
所代表之方法的參數數目。
-或-
arguments
的一或多個項目無法指派給 method
所代表之方法的對應參數。
備註
若要在 Visual Basic) 方法中表示對 (的呼叫static
,請在呼叫這個方法時傳入 null
instance
參數,或改為呼叫 。Shared
Call
如果 method
表示實例方法,則 Type 的 instance
屬性必須可指派給 所 method
表示方法的宣告類型。
如果 arguments
不是 null
,它必須具有與 所 method
表示方法的參數數目相同的項目數目。 中的每個 arguments
元素不得為 null
,而且必須可指派給的對應參數 method
,可能是 在引號之後。
注意
只有在對應的方法參數的類型 Expression為 時,才會加上引號。 引號表示元素會包裝在節點中 Quote 。 產生的節點是 , UnaryExpression 其 Operand 屬性是 的 arguments
元素。
如果 為 ,Arguments則產生的 MethodCallExpression 屬性是空null
的。arguments
否則,它包含與 相同的元素 arguments
,其中有些可能會加上引號。
Type產生的 MethodCallExpression 屬性等於 所method
表示方法的傳回型別。
適用於
Call(Expression, MethodInfo, IEnumerable<Expression>)
建立代表呼叫至採用引數之方法的 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,且 Object、Method 和 Arguments 屬性設定為指定的值。
例外狀況
instance
.Type 無法指派給 method
所代表之方法的宣告類型。
-或-
arguments
中的項目數不等於 method
所代表之方法的參數數目。
-或-
arguments
的一或多個項目無法指派給 method
所代表之方法的對應參數。
備註
若要在 Visual Basic) 方法中表示對 (的呼叫static
,請在呼叫這個方法時傳入 null
instance
參數,或改為呼叫 。Shared
Call
如果 method
表示實例方法,則 Type 的 instance
屬性必須可指派給 所 method
表示方法的宣告類型。
如果 arguments
不是 null
,它必須具有與 所 method
表示方法的參數數目相同的項目數目。 中的每個 arguments
元素不得為 null
,而且必須可指派給的對應參數 method
,可能是 在引號之後。
注意
只有在對應的方法參數的類型 Expression為 時,才會加上引號。 引號表示元素會包裝在節點中 Quote 。 產生的節點是 , UnaryExpression 其 Operand 屬性是 的 arguments
元素。
如果 為 ,Arguments則產生的 MethodCallExpression 屬性是空null
的。arguments
否則,它包含與 相同的元素 arguments
,其中有些可能會加上引號。
Type產生的 MethodCallExpression 屬性等於 所method
表示方法的傳回型別。
適用於
Call(MethodInfo, Expression[])
建立 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,且 Method 和 Arguments 屬性設定為指定的值。
例外狀況
method
為 null
。
arguments
中的項目數不等於 method
所代表之方法的參數數目。
-或-
arguments
的一或多個項目無法指派給 method
所代表之方法的對應參數。
備註
如果 arguments
不是 null
,它必須具有與 所 method
表示方法的參數數目相同的項目數目。 中的每個 arguments
元素不得為 null
,而且必須可指派給的對應參數 method
,可能是 在引號之後。
注意
只有在對應的方法參數的類型 Expression為 時,才會加上引號。 引號表示元素會包裝在節點中 Quote 。 產生的節點是 , UnaryExpression 其 Operand 屬性是 的 arguments
元素。
如果 為 ,Arguments則產生的 MethodCallExpression 屬性是空null
的。arguments
否則,它包含與 相同的元素 arguments
,其中有些可能會加上引號。
Type產生的 MethodCallExpression 屬性等於 所method
表示方法的傳回型別。 Object 屬性為 null
。
適用於
Call(MethodInfo, Expression)
建立 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,且 Object 和 Method 屬性設定為指定的值。
例外狀況
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,代表呼叫靜態方法 (在 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。
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,且 Object 和 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
備註
若要在 Visual Basic) 方法中表示對 (Shared
的呼叫static
,請在呼叫此方法時傳入 null
instance
參數。
如果 method
表示實例方法,則 Type 的 instance
屬性必須可指派給 所 method
表示方法的宣告類型。
Arguments產生的 MethodCallExpression 屬性是空的。 屬性 Type 等於 所 method
表示方法的傳回型別。
適用於
Call(MethodInfo, Expression, Expression)
建立 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。