System.Activator 类

方法描述

包含特定的方法,用以在本地或从远程创建对象类型,或获取对现有远程对象的引用。 此类不能被继承。

语法定义(C# System.Activator 类 的用法)

[ClassInterfaceAttribute(ClassInterfaceType.None)]
[ComVisibleAttribute(true)]
public sealed class Activator : _Activator

构造函数

构造函数名称 构造函数描述

成员/方法

方法名称 方法描述
CreateComInstanceFrom(String, String) 使用指定的程序集文件和与指定参数匹配程度最高的构造函数来创建指定名称的 COM 对象的实例。
CreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm) 使用命名的程序集文件和默认构造函数,创建指定名称的 COM 对象的实例。
CreateInstance(ActivationContext) 创建类型的一个实例,该类型由指定的 ActivationContext 对象指定。
CreateInstance(Type) 使用指定类型的默认构造函数来创建该类型的实例。
CreateInstance(ActivationContext, String[]) 创建类型的一个实例,该类型由指定的 ActivationContext 对象指定,并由指定的自定义激活数据激活。
CreateInstance(String, String) 使用命名的程序集和默认构造函数,创建名称已指定的类型的实例。
CreateInstance(Type, Boolean) 使用指定类型的默认构造函数来创建该类型的实例。
CreateInstance(Type, Object[]) 使用与指定参数匹配程度最高的构造函数创建指定类型的实例。
CreateInstance(AppDomain, String, String) 使用命名的程序集和默认构造函数,来创建其名称在指定的远程域中指定的类型的实例。
CreateInstance(String, String, Object[]) 使用命名的程序集和默认构造函数,创建名称已指定的类型的实例。
CreateInstance(Type, Object[], Object[]) 使用与指定参数匹配程度最高的构造函数创建指定类型的实例。
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) 使用与指定参数匹配程度最高的构造函数创建指定类型的实例。
CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) 使用与指定参数匹配程度最高的构造函数创建指定类型的实例。
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 使用指定的程序集和与指定参数匹配程度最高的构造函数来创建指定名称的类型的实例。
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 使用命名的程序集和最匹配所指定参数的构造函数,来创建其名称在指定的远程域中指定的类型的实例。
CreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) 已过时。使用指定的程序集和与指定参数匹配程度最高的构造函数来创建指定名称的类型的实例。
CreateInstance(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) 已过时。使用命名的程序集和最匹配所指定参数的构造函数,来创建其名称在指定的远程域中指定的类型的实例。
CreateInstance() 使用无参数构造函数,创建指定泛型类型参数所指定类型的实例。
CreateInstanceFrom(String, String) 使用命名的程序集文件和默认构造函数,创建名称已指定的类型的实例。
CreateInstanceFrom(AppDomain, String, String) 使用命名的程序集文件和默认构造函数,来创建其名称在指定的远程域中指定的类型的实例。
CreateInstanceFrom(String, String, Object[]) 使用命名的程序集文件和默认构造函数,创建名称已指定的类型的实例。
CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 使用指定的程序集文件和与指定参数匹配程度最高的构造函数来创建指定名称的类型的实例。
CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[]) 使用命名的程序集文件和最匹配所指定参数的构造函数,来创建其名称在指定的远程域中指定的类型的实例。
CreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) 已过时。使用指定的程序集文件和与指定参数匹配程度最高的构造函数来创建指定名称的类型的实例。
CreateInstanceFrom(AppDomain, String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) 已过时。使用命名的程序集文件和最匹配所指定参数的构造函数,来创建其名称在指定的远程域中指定的类型的实例。
Equals(Object) 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
GetObject(Type, String) 为指定类型和 URL 所指示的已知对象创建一个代理。
GetObject(Type, String, Object) 为指定类型、URL 和通道数据所指示的已知对象创建一个代理。
GetType 获取当前实例的 Type。 (继承自 Object。)
MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
ToString 返回表示当前对象的字符串。 (继承自 Object。)

提示和注释

CreateInstance 方法通过调用与指定参数匹配程度最高的构造函数来创建在程序集中定义的类型的实例。 如果没有指定任何参数,则将调用不带任何参数的构造函数(即默认构造函数)。

您必须具有足够的权限才能搜索和调用构造函数,否则将引发异常。 默认情况下,在搜索构造函数的过程中只考虑公共构造函数。 如果找不到任何构造函数或默认构造函数,则将引发异常。

联编程序参数指定一个对象,该对象在程序集中搜索合适的构造函数。 您可以指定自己的联编程序和搜索条件。 如果未指定任何联编程序,则使用默认联编程序。 有关更多信息,请参见 System.Reflection.Binder 和 System.Reflection.BindingFlags 类。

证据参数会影响构造函数的安全策略和权限。 有关更多信息,请参见 System.Security.Policy.Evidence 属性。

类型的实例可以在本地或远程站点上创建。 如果从远程创建类型,一个激活特性参数将指定远程站点的 URI。 在到达远程站点之前,创建实例的调用可能会通过中间站点进行传递。 其他激活特性可以修改该调用在远程和中间站点上进行操作所处的环境(或上下文)。

如果在本地创建实例,将返回对该对象的引用。 如果从远程创建实例,将返回对代理的引用。 通过代理,远程对象可以像本地对象一样进行操作。

GetObject 方法创建当前运行的远程对象、由服务器激活的已知对象或 XML Web services 的代理。 您可以指定连接介质(即通道)。 有关更多信息,请参见 System.Runtime.Remoting.Channels.ChannelServices 属性。

程序集包含类型定义。 CreateInstance 方法从当前所运行的程序集创建类型的实例。 CreateInstanceFrom 方法从包含程序集的文件创建实例。 CreateComInstanceFrom 方法从包含程序集的文件创建 COM 对象的实例。

System.Activator 类例子

下面的示例显示如何在运行时使用 Activator 类来动态构造对象。

using System;
using System.Reflection;
using System.Text;

public class SomeType
{
    public void DoSomething(int x)
    {
        Console.WriteLine("100 / {0} = {1}", x, 100 / x);
    }
}

public class Example
{
    static void Main()
    {
        // Create an instance of the StringBuilder type using 
        // Activator.CreateInstance.
        Object o = Activator.CreateInstance(typeof(StringBuilder));

        // Append a string into the StringBuilder object and display the 
        // StringBuilder.
        StringBuilder sb = (StringBuilder) o;
        sb.Append("Hello, there.");
        Console.WriteLine(sb);

        // Create an instance of the SomeType class that is defined in this 
        // assembly.
        System.Runtime.Remoting.ObjectHandle oh = 
            Activator.CreateInstanceFrom(Assembly.GetEntryAssembly().CodeBase, 
                                         typeof(SomeType).FullName);

        // Call an instance method defined by the SomeType type using this object.
        SomeType st = (SomeType) oh.Unwrap();

        st.DoSomething(5);
    }
}

/* This code produces the following output:

Hello, there.
100 / 5 = 20
 */

继承层次结构

System.Object

System.Activator

命名空间

namespace: System

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

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.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 系统要求。