#region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6.1mscorlib.dll
#endregion
using System.Globalization;
using System.Runtime.InteropServices;
namespace System.Reflection
{
//
// 摘要:
// 从候选列表中,选择一个成员,并执行从实参类型到形参类型的类型转换。
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
public abstract class Binder
{
//
// 摘要:
// 初始化 System.Reflection.Binder 类的新实例。
protected Binder();
//
// 摘要:
// 从一组指定的字段中,基于指定的条件中选择一个域。
//
// 参数:
// bindingAttr:
// System.Reflection.BindingFlags 值的按位组合。
//
// match:
// 用于匹配的候选项的字段集。 例如,当 System.Reflection.Binder 对象由 Overload:System.Type.InvokeMember,
// ,此参数指定的一套反射已确定为可能的字段匹配项,通常是因为它们具有正确的成员名称。 提供的默认实现 System.Type.DefaultBinder 更改此数组中的顺序。
//
// value:
// 用于查找匹配的字段的字段值。
//
// culture:
// 一个实例 System.Globalization.CultureInfo ,用来控制数据类型,强制类型的联编程序实现中强制。 如果 culture 为
// null,则使用当前线程的 System.Globalization.CultureInfo。 注意︰ 对于示例中,如果联编程序实现允许将值强制转换的字符串为数值类型,此参数是必需的要转换
// String 表示到 1000年 Double 值,因为表示 1000年。 默认的联编程序不会执行此类字符串强制。
//
// 返回结果:
// 匹配的字段。
//
// 异常:
// T:System.Reflection.AmbiguousMatchException:
// 对于默认联编程序, bindingAttr 包括 System.Reflection.BindingFlags.SetField, ,和 match 包含同样很好的匹配项的多个字段
// value。 例如, value 包含 MyClass 对象,它实现 IMyClass 接口,并 match 包含类型的字段 MyClass 和类型的字段
// IMyClass。
//
// T:System.MissingFieldException:
// 对于默认联编程序, bindingAttr 包括 System.Reflection.BindingFlags.SetField, ,和 match 不包含域,可以接受
// value。
//
// T:System.NullReferenceException:
// 对于默认联编程序, bindingAttr 包括 System.Reflection.BindingFlags.SetField, ,和 match 是
// null 或一个空数组。 - 或 - bindingAttr 包括 System.Reflection.BindingFlags.SetField, ,和
// value 是 null。
public abstract FieldInfo BindToField(BindingFlags bindingAttr, FieldInfo[] match, object value, CultureInfo culture);
//
// 摘要:
// 选择要从一组指定的方法,根据所提供的参数调用的方法。
//
// 参数:
// bindingAttr:
// System.Reflection.BindingFlags 值的按位组合。
//
// match:
// 方法用于匹配的候选项集。 例如,当 System.Reflection.Binder 对象由 Overload:System.Type.InvokeMember,
// ,此参数指定的一套反射已确定为可能的方法匹配项,通常是因为它们具有正确的成员名称。 提供的默认实现 System.Type.DefaultBinder 更改此数组中的顺序。
//
// args:
// 在传递的参数。 联编程序可以更改此数组中; 中参数的顺序例如,默认联编程序更改的参数的顺序,如果 names 参数用于指定位置顺序以外顺序。 如果联编程序实现强制参数类型,可以以及更改的类型和参数的值。
//
// modifiers:
// 使绑定能够处理的参数签名已在其中修改类型的参数修饰符的数组。 默认联编程序实现不使用此参数。
//
// culture:
// 一个实例 System.Globalization.CultureInfo ,用来控制数据类型,强制类型的联编程序实现中强制。 如果 culture 为
// null,则使用当前线程的 System.Globalization.CultureInfo。 注意︰ 对于示例中,如果联编程序实现允许将值强制转换的字符串为数值类型,此参数是必需的要转换
// String 表示到 1000年 Double 值,因为表示 1000年。 默认的联编程序不会执行此类字符串强制。
//
// names:
// 参数名称,如果参数名进行匹配时,要考虑或 null 如果要被视为纯位置变量。 例如,如果不按位置顺序提供参数,则必须使用参数名称。
//
// state:
// 该方法返回后, state 包含联编程序提供的对象,用于跟踪参数的重新排序。 联编程序创建此对象,并联编程序是此对象的唯一使用者。 如果 state 不是
// null 时 BindToMethod 返回时,必须通过 state 到 System.Reflection.Binder.ReorderArgumentArray(System.Object[]@,System.Object)
// 方法如果你想要还原 args 到其原始顺序,例如,以便您可以检索的值 ref 参数 (ByRef 参数在 Visual Basic 中的)。
//
// 返回结果:
// 匹配的方法。
//
// 异常:
// T:System.Reflection.AmbiguousMatchException:
// 对于默认联编程序, match 包含同样很好的匹配项的多个方法 args。 例如, args 包含 MyClass 对象,它实现 IMyClass 接口,并
// match 包含采用的方法, MyClass 和采用的方法, IMyClass。
//
// T:System.MissingMethodException:
// 对于默认联编程序, match 包含没有可以接受中提供的参数的方法 args。
//
// T:System.ArgumentException:
// 对于默认联编程序, match 是 null 或一个空数组。
public abstract MethodBase BindToMethod(BindingFlags bindingAttr, MethodBase[] match, ref object[] args, ParameterModifier[] modifiers, CultureInfo culture, string[] names, out object state);
//
// 摘要:
// 类型更改给定 Object 到给定 Type。
//
// 参数:
// value:
// 要更改为新的对象 Type。
//
// type:
// 新 Type , value 将变得。
//
// culture:
// 一个实例 System.Globalization.CultureInfo ,用来控制数据类型强制。 如果 culture 为 null,则使用当前线程的
// System.Globalization.CultureInfo。 注意︰ 对于示例中,此参数是必需的若要将转换 String 表示到 1000年 Double
// 值,因为表示 1000年。
//
// 返回结果:
// 一个包含给定的值作为新的类型的对象。
public abstract object ChangeType(object value, Type type, CultureInfo culture);
//
// 摘要:
// 返回从时 System.Reflection.Binder.BindToMethod(System.Reflection.BindingFlags,System.Reflection.MethodBase[],System.Object[]@,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],System.Object@),
// ,还原 args 参数是来自时 BindToMethod。
//
// 参数:
// args:
// 在传递实参。 可以更改的类型和参数的值。
//
// state:
// 一个提供联编程序的对象,用于跟踪参数的重新排序。
public abstract void ReorderArgumentArray(ref object[] args, object state);
//
// 摘要:
// 选择从一组指定的方法,基于参数类型的方法。
//
// 参数:
// bindingAttr:
// System.Reflection.BindingFlags 值的按位组合。
//
// match:
// 方法用于匹配的候选项集。 例如,当 System.Reflection.Binder 对象由 Overload:System.Type.InvokeMember,
// ,此参数指定的一套反射已确定为可能的方法匹配项,通常是因为它们具有正确的成员名称。 提供的默认实现 System.Type.DefaultBinder 更改此数组中的顺序。
//
// types:
// 用于定位匹配方法的参数类型。
//
// modifiers:
// 使绑定能够处理的参数签名已在其中修改类型的参数修饰符的数组。
//
// 返回结果:
// 匹配方法,如果找到,则否则为 null。
//
// 异常:
// T:System.Reflection.AmbiguousMatchException:
// 对于默认联编程序, match 包含多个方法,是很好的匹配项所描述的参数类型 types。 例如,在数组 types 包含 System.Type 对象
// MyClass 和中的数组 match 包含采用的基类的类的方法, MyClass 和带接口的方法的 MyClass 实现。
//
// T:System.ArgumentException:
// 对于默认联编程序, match 是 null 或一个空数组。 - 或 - 一个元素 types 派生自 System.Type, ,但不属于类型 RuntimeType。
public abstract MethodBase SelectMethod(BindingFlags bindingAttr, MethodBase[] match, Type[] types, ParameterModifier[] modifiers);
//
// 摘要:
// 从给定组的属性,基于指定的条件中选择一个属性。
//
// 参数:
// bindingAttr:
// System.Reflection.BindingFlags 值的按位组合。
//
// match:
// 用于匹配的候选项的属性集。 例如,当 System.Reflection.Binder 对象由 Overload:System.Type.InvokeMember,
// ,此参数指定的反射已确定为可能的属性集匹配项,通常是因为它们具有正确的成员名称。 提供的默认实现 System.Type.DefaultBinder 更改此数组中的顺序。
//
// returnType:
// 必须具有返回值匹配的属性。
//
// indexes:
// 要搜索的属性索引类型。 用于索引属性,例如一个类的索引器。
//
// modifiers:
// 使绑定能够处理的参数签名已在其中修改类型的参数修饰符的数组。
//
// 返回结果:
// 匹配的属性。
//
// 异常:
// T:System.Reflection.AmbiguousMatchException:
// 对于默认联编程序, match 包含同样很好的匹配项的多个属性 returnType 和 indexes。
//
// T:System.ArgumentException:
// 对于默认联编程序, match 是 null 或一个空数组。
public abstract PropertyInfo SelectProperty(BindingFlags bindingAttr, PropertyInfo[] match, Type returnType, Type[] indexes, ParameterModifier[] modifiers);
}
}