泛型的类型如何在运行时定义
泛型的类型怎么在运行时定义?
我想要的效果是
List<T> s; 这个T是在运行时才能知道的. 要怎么做?
------最佳解决方案--------------------
你的需求應該用多型....
------其他解决方案--------------------
泛型就是你在传参时,系统根据你所传的参数去进行反射,然后 返回当前这个类型的实例
------其他解决方案--------------------
c#的泛型是运行时泛型,c++的泛型是编译时泛型。
这个没错。但不论如何,类型都是编写程序是指定好的。c++的编译时泛型是为每个使用泛型的地方创建一份独立代码,运行时没有泛型概念,c#的运行时泛型意义在于运行时,clr中包含一个泛型类。
所以,运行时指定类型是相对编译器,相对运行环境而言的。编码上,都需要预先的定义好泛型的类型。
如果你无法确定类型,你可以用ArrayList。
------其他解决方案--------------------
http://topic.****.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.有办法做到吗?
------其他解决方案--------------------
这个明显编译不了
------其他解决方案--------------------
想出来怎么弄了,谢谢各位的帮忙,只能发100分,分开来很少.对不起了.
------其他解决方案--------------------
我想知道是怎么弄的,差不多的问题,lz能回复下么?
http://bbs.****.net/topics/390303539?page=1#post-393097718
我想要的效果是
List<T> s; 这个T是在运行时才能知道的. 要怎么做?
------最佳解决方案--------------------
你的需求應該用多型....
------其他解决方案--------------------
泛型就是你在传参时,系统根据你所传的参数去进行反射,然后 返回当前这个类型的实例
------其他解决方案--------------------
c#的泛型是运行时泛型,c++的泛型是编译时泛型。
这个没错。但不论如何,类型都是编写程序是指定好的。c++的编译时泛型是为每个使用泛型的地方创建一份独立代码,运行时没有泛型概念,c#的运行时泛型意义在于运行时,clr中包含一个泛型类。
所以,运行时指定类型是相对编译器,相对运行环境而言的。编码上,都需要预先的定义好泛型的类型。
如果你无法确定类型,你可以用ArrayList。
------其他解决方案--------------------
http://topic.****.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.有办法做到吗?
------其他解决方案--------------------
这个明显编译不了
------其他解决方案--------------------
想出来怎么弄了,谢谢各位的帮忙,只能发100分,分开来很少.对不起了.
------其他解决方案--------------------
我想知道是怎么弄的,差不多的问题,lz能回复下么?
http://bbs.****.net/topics/390303539?page=1#post-393097718