Binder.BindToMethod 方法

定义

基于提供的参数,从给定的方法集中选择要调用的方法。

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 参数用于指定位置顺序以外的顺序,则默认联编程序会更改参数的顺序。 如果联编程序实现强制转换参数类型,则也可以更改参数的类型和值。

modifiers
ParameterModifier[]

使绑定能够处理在其中修改了类型的参数签名的参数修饰符数组。 默认的联编程序实现不使用此参数。

culture
CultureInfo

一个 CultureInfo 实例,用于在强制类型的联编程序实现中控制数据类型强制。 如果 culturenull,则使用当前线程的 CultureInfo

names
String[]

参数名(如果匹配时要考虑参数名)或 null(如果要将变量视为纯位置)。 例如,如果没有按位置顺序提供变量,则必须使用参数名。

state
Object

方法返回之后,state 包含一个联编程序提供的对象,用于跟踪参数的重新排序。 联编程序创建此对象,并且联编程序是此对象的唯一使用者。 如果在返回 nullstate 不为 BindToMethod,若要将 state 还原为其原始顺序,您必须将 args 传递给 ReorderArgumentArray(Object[], Object) 方法,以便可以检索 ref 参数(在 Visual Basic 中为 ByRef)的值。

返回

MethodBase

匹配的方法。

例外

对于默认联编程序,match 包含多个与 args 良好匹配且匹配程序相同的方法。 例如,args 包含一个实现 IMyClass 接口的 MyClass 对象,并且 match 包含一个采用 MyClass 的方法和一个采用 IMyClass 的方法。

对于默认联编程序,match 不包含可以接受 args 中提供的参数的任何方法。

对于默认联编程序,matchnull 或一个空数组。

注解

默认绑定器同时考虑具有值和params数组 (ParamArray Visual Basic) 数组的参数。 因此,在元素数量不相同的情况下args``match,可以查找匹配项。

如果参数数组已被操作 BindToMethod,绑定器使客户端能够将参数数组映射回其原始形式。 使用此重新映射功能可在此类参数存在时返回逐引用参数。 按名称传递参数时,绑定器会重新排序参数数组。 该 state 参数跟踪参数重新排序,从而使绑定器 ReorderArgumentArray 的方法能够将参数数组重新排序为其原始形式。

该方法 BindToMethod 使用 Type.InvokeMember 该方法。

如果绑定器实现允许将字符串值强制转换为数值类型, culture 则参数需要将表示 1000 Double 的字符串转换为值,因为 1000 是由不同的区域性表示的。 默认联编程序不进行此类字符串强制。

适用于

另请参阅