Binder.BindToMethod 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
根據提供的引數,從一組指定的方法中選取要叫用 (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)。 如果 culture
為 null
,會使用目前執行緒的 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 的方法將自變數陣列重新排序為其原始形式。
方法 BindToMethod 會 Type.InvokeMember 使用方法。
如果系結器實作允許將字串值強制轉換成數值類型, culture
則必須將代表 1000 的 Double 字串轉換成值,因為不同文化特性以不同的方式表示 1000。 預設的繫結器不會處理這種字串強制型轉。