将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是可怕的!