System.Activator.CreateInstance 方法 (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence)

方法描述

使用指定的程序集和与指定参数匹配程度最高的构造函数来创建指定名称的类型的实例。

语法定义(C# System.Activator.CreateInstance 方法 (String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) 的用法)

[ObsoleteAttribute("Methods which use evidence to sandbox are obsolete and will be removed in a future release of the .NET Framework. Please use an overload of CreateInstance which does not take an Evidence parameter. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public static ObjectHandle CreateInstance(
	string assemblyName,
	string typeName,
	bool ignoreCase,
	BindingFlags bindingAttr,
	Binder binder,
	Object[] args,
	CultureInfo culture,
	Object[] activationAttributes,
	Evidence securityInfo
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
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。
securityInfo System-Security-Policy-Evidence 用于做出安全策略决策和授予代码权限的信息。
返回值 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[], Evidence)例子


异常

异常 异常描述
ArgumentNullException typeName 为 null。
MissingMethodException 未找到匹配的构造函数。
TypeLoadException 在 assemblyName 中找不到 typename。
FileNotFoundException 未找到 assemblyName。
MethodAccessException 调用方没有调用此构造函数的权限。
MemberAccessException 无法创建抽象类的实例,或者用后期绑定机制调用了该成员。
TargetInvocationException 通过反射调用的构造函数引发了异常。
InvalidComObjectException COM 类型不是通过 GetTypeFromProgID 或 GetTypeFromCLSID 获得的。
NotSupportedException
  • 不支持创建 TypedReference、ArgIterator、Void 和 RuntimeArgumentHandle 类型或者由这些类型组成的数组。
  • activationAttributes 不是空数组,并且正创建的类型未从 MarshalByRefObject 派生。
  • 与 args 匹配程度最高的构造函数具有 varargs 参数。
BadImageFormatException
  • assemblyName 不是有效程序集。
  • 当前加载的是 2.0 或更高版本的公共语言运行时 (CLR),而 assemblyName 是用高于当前加载版本的 CLR 版本编译的。 请注意,.NET Framework 2.0 版、3.0 版和 3.5 版都使用 CLR 2.0 版。
FileLoadException 用两个不同的证据将一个程序集或模块加载了两次。

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:3.5、3.0、2.0、1.1、1.0 在 4 中过时(编译器警告) .NET Framework Client Profile 受以下版本支持:3.5 SP1 在 4 中过时(编译器警告)

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。