怎么用C#的反射通过类型名字来获得类型作为泛型的T类型?

时间:2021-07-16 19:26:52
 怎么用C#的反射通过类型名字 来获得类型作为泛型的T类型?
 比如说我不知道具体用什么类型做为LsitT类型参数是String
 如果参数传来“User” 怎么实现List<User> datalist=new List<User> 呢

5 个解决方案

#1


T 只是代码书写时的代词,运行时早已被编译器替换成了真实的类型
书写成 List<T> datalist=new List<T>(); 就可以了,并不需要管 T 是张三还是李四

#2


谢谢提示,是我走死胡同了

#3


编程要按照接口(这里接口的概念包括Class对外接口,而不仅仅指 interface)来设计。如果你不知道具体类型,那么就是使用 IList。怎么可能使用泛型来实现任何东西呢?

泛型是给使用者用的。而你做一个创作者,必须知道具体的类型。

#4


泛型是一个模板,运行时展开生成成为具体代码让 Jit 编译器去编译成最重代码。所以空洞地编程就容易造成运行时才悲催地崩溃、而在开发时看不出来。

所以泛型就好像是高利贷一样,只是让一部分在花钱时没有痛苦感,而还钱时可能痛苦异常。所以使用泛型在图方便的时候,你要知道自己的编程责任,要明知道参数的接口规范、约束之并且写道代码上,不要滥用泛型。

#5


T的意思是你可以用来替换成任何类型的

#1


T 只是代码书写时的代词,运行时早已被编译器替换成了真实的类型
书写成 List<T> datalist=new List<T>(); 就可以了,并不需要管 T 是张三还是李四

#2


谢谢提示,是我走死胡同了

#3


编程要按照接口(这里接口的概念包括Class对外接口,而不仅仅指 interface)来设计。如果你不知道具体类型,那么就是使用 IList。怎么可能使用泛型来实现任何东西呢?

泛型是给使用者用的。而你做一个创作者,必须知道具体的类型。

#4


泛型是一个模板,运行时展开生成成为具体代码让 Jit 编译器去编译成最重代码。所以空洞地编程就容易造成运行时才悲催地崩溃、而在开发时看不出来。

所以泛型就好像是高利贷一样,只是让一部分在花钱时没有痛苦感,而还钱时可能痛苦异常。所以使用泛型在图方便的时候,你要知道自己的编程责任,要明知道参数的接口规范、约束之并且写道代码上,不要滥用泛型。

#5


T的意思是你可以用来替换成任何类型的