日期:2014-05-17  浏览次数:21036 次

泛型的类型怎么在运行时定义?
我想要的效果是
 List<T> s;  这个T是在运行时才能知道的. 要怎么做?
------最佳解决方案--------------------
你的需求應該用多型....
------其他解决方案--------------------
泛型就是你在传参时,系统根据你所传的参数去进行反射,然后 返回当前这个类型的实例
------其他解决方案--------------------
c#的泛型是运行时泛型,c++的泛型是编译时泛型。
这个没错。但不论如何,类型都是编写程序是指定好的。c++的编译时泛型是为每个使用泛型的地方创建一份独立代码,运行时没有泛型概念,c#的运行时泛型意义在于运行时,clr中包含一个泛型类。

所以,运行时指定类型是相对编译器,相对运行环境而言的。编码上,都需要预先的定义好泛型的类型。

如果你无法确定类型,你可以用ArrayList。
------其他解决方案--------------------
http://topic.csdn.net/u/20090622/21/DF7F7B8A-61CD-4C8F-A964-0FE15377523D.html
------其他解决方案--------------------
存入object就行了。
------其他解决方案--------------------
给你的类或者方法加泛型约束(不能是静态的)
比如 public void Test<T> where T : IComparable, new()条件可以是接口或者类名,new()必须在最后
试试
------其他解决方案--------------------
Test<T>()
------其他解决方案--------------------
需求不够明确
------其他解决方案--------------------
你想输入一个类型,系统就查询出这种类型的数据来,然后自动绑定到表格去吧?

表格本身就是能自动绑定而不需要输入属性或者字段名称的,不过你这种需求在实际开发中遇不到,不可能有这种事情发生的
------其他解决方案--------------------
该回复于2011-03-18 14:32:52被版主删除
------其他解决方案--------------------
Type t =  //运行赋值?

List<t>//?

------其他解决方案--------------------
泛型是要求编译时必须确定类型的...你的需求不应该用泛型...
------其他解决方案--------------------
泛型是要求编译时必须确定类型的
--------------
泛型实例是要求编译时必须确定类型的

应该这样说...
------其他解决方案--------------------
对的,泛型是在运行时通过反射获取具体类型
------其他解决方案--------------------
Type t = //运行赋值?

如果你不嫌麻烦,传个OBJECT过去,然后通过obj.GetType().FullName
然后一个个去判断他的类型,不建议使用,只是说明有这个方法而已
------其他解决方案--------------------
引用:
泛型是要求编译时必须确定类型的...你的需求不应该用泛型...

那应该怎么做?  List<T>里的值是用反射求出来的, 然后我用的控件需要IList类型做DataSource.有办法做到吗?
------其他解决方案--------------------
引用:
Type t =  //运行赋值?

List<t>//?
这个明显编译不了
------其他解决方案--------------------
想出来怎么弄了,谢谢各位的帮忙,只能发100分,分开来很少.对不起了.
------其他解决方案--------------------
引用:
想出来怎么弄了,谢谢各位的帮忙,只能发100分,分开来很少.对不起了.


我想知道是怎么弄的,差不多的问题,lz能回复下么?

http://bbs.csdn.net/topics/390303539?page=1#post-393097718