泛型的类型怎么在运行时定义?

assiwe 2011-03-18 10:13:47
我想要的效果是
List<T> s; 这个T是在运行时才能知道的. 要怎么做?
...全文
161 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
慧眼识狗熊 2012-12-04
  • 打赏
  • 举报
回复
引用 18 楼 assiwe 的回复:
想出来怎么弄了,谢谢各位的帮忙,只能发100分,分开来很少.对不起了.
我想知道是怎么弄的,差不多的问题,lz能回复下么? http://bbs.csdn.net/topics/390303539?page=1#post-393097718
assiwe 2011-03-18
  • 打赏
  • 举报
回复
想出来怎么弄了,谢谢各位的帮忙,只能发100分,分开来很少.对不起了.
hztltgg 2011-03-18
  • 打赏
  • 举报
回复
你想输入一个类型,系统就查询出这种类型的数据来,然后自动绑定到表格去吧?

表格本身就是能自动绑定而不需要输入属性或者字段名称的,不过你这种需求在实际开发中遇不到,不可能有这种事情发生的
amandag 2011-03-18
  • 打赏
  • 举报
回复
需求不够明确
  • 打赏
  • 举报
回复
Test<T>()
  • 打赏
  • 举报
回复
给你的类或者方法加泛型约束(不能是静态的)
比如 public void Test<T> where T : IComparable, new()条件可以是接口或者类名,new()必须在最后
试试
yeaicc 2011-03-18
  • 打赏
  • 举报
回复
存入object就行了。
ILOVE_ASPNET 2011-03-18
  • 打赏
  • 举报
回复
Type t = //运行赋值?

如果你不嫌麻烦,传个OBJECT过去,然后通过obj.GetType().FullName
然后一个个去判断他的类型,不建议使用,只是说明有这个方法而已
兔子-顾问 2011-03-18
  • 打赏
  • 举报
回复
c#的泛型是运行时泛型,c++的泛型是编译时泛型。
这个没错。但不论如何,类型都是编写程序是指定好的。c++的编译时泛型是为每个使用泛型的地方创建一份独立代码,运行时没有泛型概念,c#的运行时泛型意义在于运行时,clr中包含一个泛型类。

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

如果你无法确定类型,你可以用ArrayList。
assiwe 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wude_s 的回复:]

Type t = //运行赋值?

List<t>//?
[/Quote]这个明显编译不了
assiwe 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vrhero 的回复:]

泛型是要求编译时必须确定类型的...你的需求不应该用泛型...
[/Quote]
那应该怎么做? List<T>里的值是用反射求出来的, 然后我用的控件需要IList类型做DataSource.有办法做到吗?
ILOVE_ASPNET 2011-03-18
  • 打赏
  • 举报
回复
泛型就是你在传参时,系统根据你所传的参数去进行反射,然后 返回当前这个类型的实例
云瑀 2011-03-18
  • 打赏
  • 举报
回复
你的需求應該用多型....
pd00 2011-03-18
  • 打赏
  • 举报
回复
对的,泛型是在运行时通过反射获取具体类型
vrhero 2011-03-18
  • 打赏
  • 举报
回复
泛型是要求编译时必须确定类型的
--------------
泛型实例是要求编译时必须确定类型的

应该这样说...
vrhero 2011-03-18
  • 打赏
  • 举报
回复
泛型是要求编译时必须确定类型的...你的需求不应该用泛型...
Wude_S 2011-03-18
  • 打赏
  • 举报
回复
Type t = //运行赋值?

List<t>//?

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧