IReflect.InvokeMember 方法

定义

调用指定的成员。

C#
public 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);
C#
public 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);

参数

name
String

要查找的成员的名称。

invokeAttr
BindingFlags

BindingFlags 调用特性之一。 invokeAttr 参数可以是构造函数、方法、属性或字段。 必须指定合适的调用属性。 通过将空字符串 ("") 作为成员的名称传递来调用类的默认成员。

binder
Binder

BindingFlags 位标志之一。 实现 Binder,包含与此方法相关的属性。

target
Object

对其调用指定成员的对象。 对于静态成员,此参数被忽略。

args
Object[]

包含要调用的成员的参数数目、顺序和类型的对象数组。 如果没有参数,则这是一个空数组。

modifiers
ParameterModifier[]

一个 ParameterModifier 对象数组。 此数组与表示元数据中被调用成员的参数属性的 args 参数具有相同的长度。 参数可以有下列属性:pdInpdOutpdRetvalpdOptionalpdHasDefault。 这些属性分别表示 [In]、[Out]、[retval]、[optional] 和默认参数。 这些属性由不同的互操作性服务使用。

culture
CultureInfo

用于控制类型强制的 CultureInfo 的实例。 例如,culture 将表示 1000 的字符串转换为 Double 值,因为不同的区域性以不同的方式表示 1000。 如果此参数为 null,则使用当前线程的 CultureInfo

namedParameters
String[]

参数的字符串数组。

返回

指定的成员。

例外

为字段 set 指定了多个参数。

找不到此字段或属性。

找不到此方法。

在没有所需 ReflectionPermission 的情况下调用私有成员。

示例

以下示例获取 属性的值 Now

C#
using System;
using System.Reflection;

public class MainClass
{
    public static void Main(string[] args)
    {
        Type tDate = typeof(System.DateTime);
        Object result = tDate.InvokeMember("Now",
            BindingFlags.GetProperty, null, null, new Object[0]);
        Console.WriteLine(result.ToString());
    }
}

注解

在指定的活页夹和调用属性的约束下,要调用的方法必须为可访问,并且提供与指定的自变量列表最具体的匹配。

如果方法声明中的参数数等于指定参数列表中的参数数,并且每个参数的类型可由绑定器转换为参数的类型,则调用方法。

备注

传递给 InvokeMember 方法的参数修饰符数组必须包含单个参数修饰符。 在确定向 COM 公开时需要通过引用传递的参数时,仅考虑第一个参数修饰符。

绑定器根据请求的绑定类型查找所有匹配的方法, (BindingFlags.InvokeMethodGetProperties等) 。 方法集按名称、参数数和绑定器中定义的一组搜索修饰符进行筛选。 选择方法后,将调用该方法,此时会检查辅助功能。 搜索可以根据与方法关联的辅助功能属性控制搜索哪组方法。 BindToMethod 选择要调用的方法。 默认绑定器选择最具体的匹配项。

对于完全受信任的代码,将忽略访问限制。 也就是说,只要代码完全受信任,就可以通过反射访问和调用私有构造函数、方法、字段和属性。

适用于

产品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

另请参阅