2011-09-13 151 views
0

我必须编写一个函数,类名为Parameter作为函数,它是字符串。所以我需要创建这个类名的实例。只有如何从提供类名称的字符串创建实例?

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

} 

回答

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

工作,如果T是一个公共类型,并具有无参数,公共构造函数。但是,这是模式,它可以在其他情况下工作。

+0

类型T = Assembly.GetType(类名);这里如果我使用className作为字符串它显示错误 – sandeep

1

大家都告诉你,你必须得到你正在寻找的类型,然后将它传递给激活的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

相关问题