我需要初始化一个System.Collections.Generic.List<String>
使用Reflection的实例。例如,类型名称是从XML加载的,在程序启动之前是未知的。我得到了类型及其组装:
Type T = Type.GetType("System.Collections.Generic.List`1[System.String]");
Assembly ass = T.Assembly;
之后,我需要初始化变量,但是我不想显式地编写类型,因此可以使用:
var lst = ass.CreateInstance(T.FullName) as List<String>;
是不合适的。我已经在T中获得了所需的类型,因此,如果我可以做类似的事情:
var lst = ass.CreateInstance(T.FullName) as T;
应该没问题 但是我不能。我需要做什么?
不可能声明“变量”类型的变量。由于C#是一种强类型的语言,因此在编译时必须事先知道任何变量/属性/方法/参数/类/所有内容。
像您的示例一样,处理动态生成的数据类型的唯一真实方法是保留不安全类型object
或dynamic
,它可以包含任何内容,甚至在编译时也不知道。还请记住,var
语法实际上并不是任何变量,它只是避免编写实类型的语法糖,它是从右侧的类型获得的=
,因此对您的目的确实没有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句