ConstructorInfo.Invoke 方法

定义

调用该实例反映的构造函数。

重载

Invoke(Object[])

调用由具有指定参数的实例反映的构造函数,为不常用的参数提供默认值。

Invoke(BindingFlags, Binder, Object[], CultureInfo)

在派生类中实现时,在指定 Binder 的约束下调用具有指定参数的此 ConstructorInfo 所反映的构造函数。

Invoke(Object[])

Source:
ConstructorInfo.cs
Source:
ConstructorInfo.cs
Source:
ConstructorInfo.cs

调用由具有指定参数的实例反映的构造函数,为不常用的参数提供默认值。

public:
 virtual System::Object ^ Invoke(cli::array <System::Object ^> ^ parameters);
public:
 System::Object ^ Invoke(cli::array <System::Object ^> ^ parameters);
public virtual object Invoke (object[] parameters);
public object Invoke (object?[]? parameters);
public object Invoke (object[] parameters);
override this.Invoke : obj[] -> obj
Public Overridable Function Invoke (parameters As Object()) As Object
Public Function Invoke (parameters As Object()) As Object

参数

parameters
Object[]

一个值的数组,其与此构造函数的参数的数量、顺序和类型(在默认绑定的约束下)相匹配。 如果此构造函数不采用参数,则使用具有零个元素或 null 的数组,如 Object[] parameters = new Object[0] 中所示。 此数组中未使用值显式初始化的任何对象都将包含该对象类型的默认值。 对于引用类型元素,此值为 null。 对于值类型元素,此值为 0、0.0 或 false,具体取决于特定的元素类型。

返回

与构造函数关联的类的实例。

例外

此类为抽象类。

- 或 -

构造函数是一个类初始值设定项。

构造函数专用或受保护,且调用方缺少 MemberAccess

注意:在 .NET for Windows 应用商店应用可移植类库中,请改为捕获基类异常 MemberAccessException

parameters 数组不包含与此构造函数接受的类型匹配的值。

调用的构造函数引发异常。

传递的参数数量不正确。

调用方没有所需的代码访问权限。

注解

数组中 parameters 元素的数量、类型和顺序应与此实例所反映的构造函数的参数的数量、类型和顺序相同。 在调用构造函数之前, Invoke 请确保调用方具有访问权限并验证参数是否有效。

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

注意

若要创建没有实例构造函数的值类型的实例,请使用 CreateInstance 方法。

此方法是以下重载版本的便捷方法,使用默认值。 不能重写此方法。

注意

从 .NET Framework 2.0 开始,如果调用方已使用 标志授予调用ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccess方,并且非公共成员的授予集仅限于调用方授权集或其子集,则此方法可用于访问非公共成员。 (请参阅 Reflection.) 的安全注意事项若要使用此功能,应用程序应面向 .NET Framework 3.5 或更高版本。

适用于

Invoke(BindingFlags, Binder, Object[], CultureInfo)

Source:
ConstructorInfo.cs
Source:
ConstructorInfo.cs
Source:
ConstructorInfo.cs

在派生类中实现时,在指定 Binder 的约束下调用具有指定参数的此 ConstructorInfo 所反映的构造函数。

public:
 abstract System::Object ^ Invoke(System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ parameters, System::Globalization::CultureInfo ^ culture);
public abstract object Invoke (System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture);
public abstract object Invoke (System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object[] parameters, System.Globalization.CultureInfo culture);
override this.Invoke : System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo -> obj
Public MustOverride Function Invoke (invokeAttr As BindingFlags, binder As Binder, parameters As Object(), culture As CultureInfo) As Object

参数

invokeAttr
BindingFlags

指定绑定类型的 BindingFlags 值之一。

binder
Binder

一个 Binder,它定义一组属性并通过反射来启用绑定、自变量类型强制转换和成员调用。 如果 bindernull,则使用 Binder.DefaultBinding

parameters
Object[]

一组 Object 类型,该类型用于在 binder 的约束下匹配此构造函数的参数的个数、顺序和类型。 如果此构造函数不需要参数,则像 Object[] parameters = new Object[0] 中那样传递一个包含零元素的数组。 此数组中未使用值显式初始化的任何对象都将包含该对象类型的默认值。 对于引用类型元素,此值为 null。 对于值类型元素,此值为 0、0.0 或 false,具体取决于特定的元素类型。

culture
CultureInfo

用于控制类型强制转换的 CultureInfo。 如果这是 null,则使用当前线程的 CultureInfo

返回

与构造函数关联的类的实例。

例外

binder 的约束下,parameters 数组不包含与此构造函数所接受的类型相匹配的值。

调用的构造函数引发异常。

传递的参数数量不正确。

调用方没有所需的代码访问权限。

此类为抽象类。

- 或 -

构造函数是一个类初始值设定项。

构造函数专用或受保护,且调用方缺少 MemberAccess

注解

数组中 parameters 元素的数量、类型和顺序应与此实例所反映的构造函数的参数的数量、类型和顺序相同。

在调用构造函数之前, Invoke 请确保调用方具有访问权限,并且参数的数量、顺序和类型正确。

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

注意

若要创建没有实例构造函数的值类型的实例,请使用 CreateInstance 方法。

注意

从 .NET Framework 2.0 开始,如果调用方已使用 标志授予调用ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccess方,并且非公共成员的授予集仅限于调用方授权集或其子集,则此方法可用于访问非公共成员。 (请参阅 Reflection.) 的安全注意事项若要使用此功能,应用程序应面向 .NET Framework 3.5 或更高版本。

另请参阅

适用于