将string转换为类名称

我有一个stringvariables,表示自定义类的名称。 例:

string s = "Customer"; 

我将需要创build一个客户的数组列表。 所以,所需的语法是:

 List<Customer> cust = new .. 

如何转换strings以便能够在运行时创build此数组列表?

那么,有一件事ArrayList不是通用的…你的意思是List<Customer>

您可以使用Type.GetType(string)通过其名称获取与Type关联的Type对象。 如果程序集不是mscorlib或当前正在执行的types,则需要包含程序集名称。 无论哪种方式,你也需要命名空间。

你确定你确实需要一个generics? generics通常提供编译时types的安全性,如果在执行时发现types,显然你不会有太多的东西。 你可能会觉得它有用,但…

 Type elementType = Type.GetType("Customer"); Type listType = typeof(List<>).MakeGenericType(new Type[] { elementType }); object list = Activator.CreateInstance(listType); 

如果您需要对该列表进行任何操作,则可能需要进行更多的通用reflection,例如调用通用方法。

这是一个反思问题。 你需要findtypes,然后实例化它的一个实例,像这样:

 Type hai = Type.GetType(classString,true); Object o = (Activator.CreateInstance(hai)); //Or you could cast here if you already knew the type somehow 

或者,CreateInstance(assemblyName,className)

你将需要注意名称空间/types冲突,但是这将为一个简单的场景做诀窍。

另外,在try / catch中包装! Activator.CreateInstance是可怕的!