TypeDelegator.InvokeMember 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
调用指定的成员。 在指定的活页夹和调用属性的约束下,要调用的方法必须为可访问,并且提供与指定的自变量列表最具体的匹配。
public:
 override System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, cli::array <System::Reflection::ParameterModifier> ^ modifiers, System::Globalization::CultureInfo ^ culture, cli::array <System::String ^> ^ namedParameters);public override object? InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object? target, object?[]? args, System.Reflection.ParameterModifier[]? modifiers, System.Globalization.CultureInfo? culture, string[]? namedParameters);public override object InvokeMember(string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters);override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> objPublic Overrides Function InvokeMember (name As String, invokeAttr As BindingFlags, binder As Binder, target As Object, args As Object(), modifiers As ParameterModifier(), culture As CultureInfo, namedParameters As String()) As Object参数
- name
- String
要调用的成员的名称。 这可能是一个构造函数、方法、属性或字段。 如果传递了空字符串 (""),则调用默认成员。
- invokeAttr
- BindingFlags
调用属性。 这必须是下列之一:BindingFlags、InvokeMethod、CreateInstance、Static、GetField、SetField、GetProperty 或 SetProperty。 必须指定合适的调用属性。 如果要调用静态成员,则必须设置 Static 标志。
- binder
- Binder
一个对象,它启用绑定、对自变量类型的强制、对成员的调用,以及通过反射对 MemberInfo 对象的检索。 如果 binder 为 null,则使用默认联编程序。 请参阅 Binder。
- target
- Object
对其调用指定成员的对象。
- args
- Object[]
              Object 类型的数组,包含要调用的成员参数的数目、顺序和类型。 如果 args 包含未初始化的 Object,则它被视为空,用默认联编程序可将它扩展为 0、0.0 或一个字符串。
- modifiers
- ParameterModifier[]
              ParameterModifier 类型的数组,其长度与 args 相同,其元素表示与要调用的成员参数关联的属性。 参数在成员的签名中有与其关联的属性。 对于 ByRef,请使用 ParameterModifier.ByRef;对于空,请使用 ParameterModifier.None。 默认联编程序执行与这些内容的精确匹配。 
              In 和 InOut 这样的属性不用于绑定,可以使用 ParameterInfo 查看它们。
- culture
- CultureInfo
用于控制类型强制的 CultureInfo 的实例。 类型强制在某些情况下是必要的,例如将表示 1000 的字符串转换为 Double 值,因为不同的区域性表示 1000 的方式不同。 如果 culture 为 null,则使用当前线程的 CultureInfo 的 CultureInfo。
- namedParameters
- String[]
一个字符串数组,包含与 args 数组匹配的参数名(从元素零开始)。 数组中不能有空缺。 如果 args. 
              Length 大于 namedParameters。 
              Length,则按顺序填充剩余的参数。
返回
表示被调用成员的返回值的 Object。
注解
如果满足以下两个条件,则将调用 方法:
- 除非在成员) 上定义了默认参数,否则方法声明中的参数数等于指定参数列表中的参数数 (。 
- 每个参数的类型都可以由绑定器转换为参数的类型。 
绑定器将查找所有匹配的方法。 这些方法基于请求的绑定类型 (BindingFlags.MethodInvoke、 BindingFlags.GetProperties等) 。 方法集按名称、参数数和绑定器中定义的一组搜索修饰符进行筛选。
选择 方法后,将调用该方法。 此时会检查辅助功能。 搜索可以根据与方法关联的辅助功能属性控制搜索哪组方法。 方法 Binder.BindToMethod 负责选择要调用的方法。 默认绑定器选择最具体的匹配项。
注意
对于完全受信任的代码,将忽略访问限制。 也就是说,每当代码完全受信任时,都可以使用反射访问和调用私有构造函数、方法、字段和属性。
目前,InvokeMember对每种类型的对象执行 Microsoft .NET Framework反射语义。
如果 name 指定的成员是数组, BindingFlags.GetField 并且标志在 上 invokeAttr设置,则 args 数组指定要返回其值的元素。 例如,以下通过 Type 对象 t 调用将返回字符串数组 MyArray 的第一个元素的值,该元素是调用对象的成员:
String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});
可以使用 InvokeMember 设置成员数组的一个或多个元素。 所有元素都设置为相同的值。 数组 args 的格式必须如下所示:
{index1,
    index2,, value}
例如,若要设置上一示例中 MyArray 的第一个成员,语法如下所示:
t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new
    Variant[]{0,"Updated"});