当前位置:  开发笔记 > 编程语言 > 正文

将字符串转换为类名

如何解决《将字符串转换为类名》经验,为你挑选了2个好方法。

我有一个字符串变量,表示自定义类的名称.例:

string s = "Customer";

我需要创建一个客户的arraylist.所以,所需的语法是:

List cust = new .. 

如何转换字符串s以便能够在运行时创建此arraylist?



1> Jon Skeet..:

好吧,有一点ArrayList不通用......你的意思是List

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

你确定你真的需要通用类型吗?泛型主要提供编译时类型安全性,如果您在执行时找到类型,那么显然您不会有太多.你可能会觉得它很有用......

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

object list = Activator.CreateInstance(listType);

如果你需要对该列表任何事情,你可能需要做更多的泛型反射,例如调用泛型方法.



2> pezi_pink_sq..:

这是一个反思问题.您需要找到该类型然后实例化它的实例,如下所示:

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)

您需要注意命名空间/类型冲突,但这样做可以解决一个简单的场景.

另外,将它包装在try/catch中!Activator.CreateInstance很吓人!

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有