如何从提供类名的字符串创建实例?

时间:2011-09-13 07:17:33

标签: c# .net

我必须编写一个函数,其中Name作为Parameter to function,它在string中。所以我需要创建这个类名的实例。

createInstance(string ClassName){
  .............
  //Here i Need to create instance of  ClassName,
  .............

 }

3 个答案:

答案 0 :(得分:4)

Activator.CreateInstance(Type.GetType(ClassName));

答案 1 :(得分:2)

Type t = Assembly.GetType(className);
Activator.CreateInstance(t);

仅当T是公共类型且具有无参数的公共构造函数时才有效。但这就是模式,它也可以在其他情况下工作。

答案 2 :(得分:1)

正如大家告诉你的那样,你必须得到你想要的类型,然后以这种方式将它传递给Activator的CreateInstance方法:

Type t = Type.GetType(className);
Activator.CreateInstance(t);

请注意以下事实:如果将GetType传递给要尝试实例化的类的全名(例如“MyNamespace.Foo”),只有在从同一程序集内部调用它时才返回类型。搜索到的类,否则返回null。

如果您希望它适用于通用程序集中的类型,则必须使用AssemblyQualifiedName(请查看此处了解详细信息:http://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname.aspx