信息
您所需的主题如下所示。但此主题未包含在此库中。

Activator 类

2013/12/13

包含用于在本地创建对象类型的方法。无法继承此类。

Namespace:  System
程序集:  mscorlib(位于 mscorlib.dll 中)

public sealed class Activator

Activator 类型公开以下成员。

  名称说明
公共方法静态成员CreateInstance(Type)使用指定类型的默认构造函数来创建该类型的实例。
公共方法静态成员CreateInstance(Type, Object[])使用与指定参数匹配程度最高的构造函数创建指定类型的实例。
公共方法静态成员CreateInstance<T>()使用无参数构造函数,创建指定泛型类型参数所指定类型的实例。
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法ToString返回一个字符串,它表示当前的对象。 (从 Object 继承。)
返回顶部

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

要创建的类型和要调用的构造函数必须是可访问的。如果使用 DynamicMethod 创建动态方法,则不能调用 internal 构造函数,因为该动态方法将承载在系统提供的程序集内的某个匿名模块中。

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

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

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


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

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      Type sbType = typeof(StringBuilder);

      // Create an instance of the StringBuilder type using Activator.CreateInstance
      // and the parameterless constructor.
      object o = Activator.CreateInstance(sbType);

      // Append a string to the StringBuilder object and display the StringBuilder,
      // late bound.
      sbType.InvokeMember("Append", 
         BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, 
         Type.DefaultBinder, 
         o, new object[] {"Hello, there."});
      outputBlock.Text += o.ToString() + "\n";

      // Create an instance of StringBuilder using the constructor that takes a 
      // string.
      o = Activator.CreateInstance(sbType, new object[]{"Hello, there."});

      // Append a string to the StringBuilder object and display the StringBuilder,
      // late bound.
      sbType.InvokeMember("Append", 
         BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, 
         Type.DefaultBinder, 
         o, new object[] {" And hello again!"});
      outputBlock.Text += o.ToString() + "\n";
   }
}

/* This code produces the following output:

Hello, there.
Hello, there. And hello again!
 */


Windows Phone OS

受以下版本支持: 8.0, 7.1, 7.0

Windows Phone

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

显示: