在c#中用字符串变量初始化一个类?

时间:2009-08-09 21:44:14

标签: c# class dynamic instance

是否可以通过字符串变量初始化类?我有PHP代码。

<?php
  $classname = "test";

  $oTest = new $classname();

  class test{
  }
?>

我如何在c#中执行此操作?

3 个答案:

答案 0 :(得分:19)

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

然而,问题是C#3.0是一种静态类型语言。您不能只在返回的对象上调用随机方法。您可以让实例化的类实现一些通用接口,并将上述表达式的结果强制转换为接口,或者手动使用反射来调用返回对象上的方法。

答案 1 :(得分:5)

您可以使用Activator.CreateInstance方法来实现类似的结果。但除了类型

的完全限定名称外,还必须提供程序集名称
var instance = Activator.CreateInstance("SomeAssemblyName","Some.Full.Type.Test");

答案 2 :(得分:1)

您可以使用Activator.CreateInstance。各种重载的文档在这里:http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx