Binder.BindToMethod 方法

定義

根據提供的引數,從一組指定的方法中選取要叫用 (Invoke) 的方法。

public:
 abstract System::Reflection::MethodBase ^ BindToMethod(System::Reflection::BindingFlags bindingAttr, cli::array <System::Reflection::MethodBase ^> ^ match, cli::array <System::Object ^> ^ % args, cli::array <System::Reflection::ParameterModifier> ^ modifiers, System::Globalization::CultureInfo ^ culture, cli::array <System::String ^> ^ names, [Runtime::InteropServices::Out] System::Object ^ % state);
public abstract System.Reflection.MethodBase BindToMethod (System.Reflection.BindingFlags bindingAttr, System.Reflection.MethodBase[] match, ref object?[] args, System.Reflection.ParameterModifier[]? modifiers, System.Globalization.CultureInfo? culture, string[]? names, out object? state);
public abstract System.Reflection.MethodBase BindToMethod (System.Reflection.BindingFlags bindingAttr, System.Reflection.MethodBase[] match, ref object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] names, out object state);
abstract member BindToMethod : System.Reflection.BindingFlags * System.Reflection.MethodBase[] * Object[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] * obj -> System.Reflection.MethodBase
Public MustOverride Function BindToMethod (bindingAttr As BindingFlags, match As MethodBase(), ByRef args As Object(), modifiers As ParameterModifier(), culture As CultureInfo, names As String(), ByRef state As Object) As MethodBase

參數

bindingAttr
BindingFlags

BindingFlags 值的位元組合。

match
MethodBase[]

可能相符的方法集合。 例如,當 Binder 使用 InvokeMember 物件時,這個參數就會指定已由反映判定為可能相符的方法集合,通常是因為這些方法具有正確的成員名稱。 DefaultBinder 所提供的預設實作會變更此陣列的順序。

args
Object[]

傳入的引數。 繫結器可能會變更此陣列中的引數順序;例如,如果使用 names 參數來指定位置順序以外的其他順序,預設繫結器就會變更引數的順序。 如果繫結器實作強制型轉了引數型別 (Argument Type),引數的型別和值也可能會變更。

modifiers
ParameterModifier[]

參數修飾詞的陣列,啟用繫結以使用型別已被修改的參數簽章。 預設繫結器實作時並不會使用這個參數。

culture
CultureInfo

CultureInfo 的執行個體 (Instance),用來控制強制型轉型別的繫結器 (Binder) 實作中資料型別的強制型轉 (Coercion)。 如果 culturenull,會使用目前執行緒的 CultureInfo

names
String[]

如果比對時必須考慮參數名稱,便為參數名稱;如果只將引數視為單純的位置引數,則為 null。 例如,如果位置順序中並未提供引數,您就必須使用參數名稱。

state
Object

在此方法傳回之後,state 就會包含繫結器提供的物件,用以記錄引數重新調整順序。 繫結器會建立這個物件,而且也是這個物件的唯一使用者。 如果 null 傳回時 state 不是 BindToMethod,而且您想要將 state 還原成原來的順序,使您可以擷取 ref 參數 (在 Visual Basic 中為 ByRef 參數) 的值,就必須將 args 傳遞至 ReorderArgumentArray(Object[], Object) 方法。

傳回

符合的方法。

例外狀況

如果是預設繫結器,match 將包含同樣都與 args 相符的多個方法。 例如,args包含實作 IMyClass 介面的物件,並match包含採用 的方法MyClass,以及採用 IMyClass的方法。MyClass

如果是預設繫結器,match 不會包含可以接受 args 中提供之引數的方法。

如果是預設繫結器 (Binder),match 會是 null 或空白陣列。

備註

默認係結器會將具有值和 params 數位的參數納入考慮, (Visual Basic) 中的陣列 ParamArray 。 因此,在和 match 不包含相同項目數目的情況下args,可以尋找相符專案。

如果自變數陣列已由 BindToMethod操作,系結器可讓用戶端將自變數的數位對應回其原始形式。 使用此重新對應功能,在這類自變數存在時傳回參考自變數。 當您依名稱傳遞自變數時,系結器會重新排序自變數陣列。 參數 state 會持續追蹤自變數重新排序,進而讓系結器 ReorderArgumentArray 的方法將自變數陣列重新排序為其原始形式。

方法 BindToMethodType.InvokeMember 使用方法。

如果系結器實作允許將字串值強制轉換成數值類型, culture 則必須將代表 1000 的 Double 字串轉換成值,因為不同文化特性以不同的方式表示 1000。 預設的繫結器不會處理這種字串強制型轉。

適用於

另請參閱