天天看点

C#中利用反射,动态生成类的实例

在java语言中,运用Class.Class.forName(),可以根据一个类的类名(Type?),动态生成这个类的一个实例,在C#中该如何进行这样的操作呢?方法如下:

System.Activator.CreateInstance(Type.GetType(string))

其中的string代表需要创建的类的类名,注意,该名称包含命名空间。

例子:

在Hiber命名空间下建立两个类,一个叫做Test

using System;

namespace Hiber

 public class Test

 {  

     public Test()

     {

        Console.WriteLine("Test Class");

     }  

  }

}

另一个类(程序入口)叫做TestEntry

using System;

namespace Hiber

{

 class TestEntry

 {

  [STAThread]

  static void Main(string[] args)

  {     

   object temp = System.Activator.CreateInstance(Type.GetType("Hiber.OracleTest"));

  }

 }

}

运行,可以看到控制台打印出“Test Class”,即调用了Test的构造方法