System.Activator.CreateInstance 方法 (AppDomain, String, String)

方法描述

使用命名的程序集和默认构造函数,来创建其名称在指定的远程域中指定的类型的实例。

语法定义(C# System.Activator.CreateInstance 方法 (AppDomain, String, String) 的用法)

public static ObjectHandle CreateInstance(
	AppDomain domain,
	string assemblyName,
	string typeName
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
domain System-AppDomain 在其中创建名为 typeName 的类型的远程域。
assemblyName System-String 将在其中查找名为 typeName 的类型的程序集的名称。如果 assemblyName 为 null,则搜索正在执行的程序集。
typeName System-String 首选类型的名称。
返回值 System.Runtime.Remoting.ObjectHandle 要访问新创建的实例则必须解包的句柄。

提示和注释

当主机需要在具有受限安全权限的应用程序域中执行代码时,请使用 CreateInstance。

使用 ObjectHandle.Unwrap 解包返回值。

注意

此方法使用 SecurityAction.LinkDemand 来要求直接调用方具有完全信任。 有关使用 LinkDemand 成员的重要限制,请参见 Demand 和 LinkDemand。

System.Activator.CreateInstance 方法 (AppDomain, String, String)例子


异常

异常 异常描述
ArgumentNullException typeName 或 domain 为 null。
MissingMethodException 找不到匹配的公共构造函数。
TypeLoadException 在 assemblyName 中找不到 typename。
FileNotFoundException 未找到 assemblyName。
MethodAccessException 调用方没有调用此构造函数的权限。
MemberAccessException
  • 无法创建抽象类型的实例。
  • 用后期绑定机制调用该成员。
TargetInvocationException 通过反射调用的构造函数引发了异常。
InvalidComObjectException COM 类型不是通过 GetTypeFromProgID 或 GetTypeFromCLSID 获得的。
NotSupportedException 不支持创建 TypedReference、ArgIterator、Void 和 RuntimeArgumentHandle 类型或者由这些类型组成的数组。
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 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1

适用平台

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 系统要求。