System.Activator.CreateInstance 方法 (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])
方法描述
使用指定的程序集和与指定参数匹配程度最高的构造函数来创建指定名称的类型的实例。
语法定义(C# System.Activator.CreateInstance 方法 (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 的用法)
public static ObjectHandle CreateInstance( string assemblyName, string typeName, bool ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes )
参数/返回值
参数值/返回值 | 参数类型/返回类型 | 参数描述/返回描述 |
---|---|---|
assemblyName | System-String | 将在其中查找名为 typeName 的类型的程序集的名称。如果 assemblyName 为 null,则搜索正在执行的程序集。 |
typeName | System-String | 首选类型的名称。 |
ignoreCase | System-Boolean | 使用 true 指定对 typeName 的搜索不区分大小写;使用 false 则指定搜索区分大小写。 |
bindingAttr | System-Reflection-BindingFlags | 影响 typeName 构造函数搜索的零个或多个位标志的组合。如果 bindingAttr 为零,则对公共构造函数进行区分大小写的搜索。 |
binder | System-Reflection-Binder | 使用 bindingAttr 和 args 来查找和标识 typeName 构造函数的对象。如果 binder 为 null,则使用默认联编程序。 |
args | System-Object[] | 与要调用构造函数的参数数量、顺序和类型匹配的参数数组。如果 args 为空数组或 null,则调用不带任何参数的构造函数(默认构造函数)。 |
culture | System-Globalization-CultureInfo | 区域性特定的信息,这些信息控制将 args 强制转换为 typeName 构造函数所声明的正式类型。如果 culture 为 null,则使用当前线程的 CultureInfo。 |
activationAttributes | System-Object[] | 包含一个或多个可以参与激活的特性的数组。通常为包含单个 UrlAttribute 对象的数组。UrlAttribute 指定激活远程对象所需的 URL。 |
返回值 | System.Runtime.Remoting.ObjectHandle | 要访问新创建的实例则必须解包的句柄。 |
提示和注释
使用 ObjectHandle.Unwrap 解包返回值。
activationAttributes 参数与客户端激活对象相关;请参见Client Activation。
注意
从 .NET Framework 2.0 版 Service Pack 1 开始,如果已使用 ReflectionPermissionFlag.RestrictedMemberAccess 标志授予调用方 ReflectionPermission,并且包含非公共类型和成员的程序集的授予集限制为调用方的授予集或其子集,则此方法可用于创建非公共类型和成员。 (请参见 反射的安全注意事项。)
若要使用此功能,您的应用程序应面向 .NET Framework 3.5 版 或更高版本。
System.Activator.CreateInstance 方法 (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])例子
异常
异常 | 异常描述 |
---|---|
ArgumentNullException | typeName 为 null。 |
MissingMethodException | 未找到匹配的构造函数。 |
TypeLoadException | 在 assemblyName 中找不到 typename。 |
FileNotFoundException | 未找到 assemblyName。 |
MethodAccessException | 调用方没有调用此构造函数的权限。 |
MemberAccessException | 无法创建抽象类的实例,或者用后期绑定机制调用了该成员。 |
TargetInvocationException | 通过反射调用的构造函数引发了异常。 |
InvalidComObjectException | COM 类型不是通过 GetTypeFromProgID 或 GetTypeFromCLSID 获得的。 |
NotSupportedException |
|
BadImageFormatException |
|
FileLoadException | 用两个不同的证据将一个程序集或模块加载了两次。 |
版本信息
.NET Framework 受以下版本支持:4 .NET Framework Client Profile 受以下版本支持:4
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。