Object转成List的问题!!

a157147899 2012-02-27 11:58:13

public void CheckType(object data)
{
if (data.GetType().IsGenericType)
{
//这里我想把data转换我的List<T>,不知道该怎么转。
//下面这句能获取泛型的类型形参,但是我该怎么用它来转换data?
Type type = data.GetType().GetGenericArguments()[0];
//data=(List<T>)data;就是这个意思,但是这个T该怎么弄。
}
}
...全文
19675 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
a397859976 2014-06-23
  • 打赏
  • 举报
回复
引用27楼的 确实可以绑定数据 ,但还是有个问题,IEnumerable lt = data as IEnumerable; 怎么获取lt的个数Count呢? 另外 如果我做分页的话 怎样取N--M的数据呢? 求高手指教。
sonnchuui520 2013-10-23
  • 打赏
  • 举报
回复
引用 27 楼 newdigitime 的回复:


public void CheckType(object data)
 {
    IEnumerable lt = data as IEnumerable;
    foreach (object item in lt)
      {
      item根据你的目的进行处理.
      }
 } 


谢谢你的提示,我实现了我要的功能!
sonnchuui520 2013-10-23
  • 打赏
  • 举报
回复
受益了!感谢!
--茶-- 2013-07-24
  • 打赏
  • 举报
回复
非常好的一次讨论。
programmer_xyl 2013-04-25
  • 打赏
  • 举报
回复
受益了,其实我也是就想看看微软DataSource的源码,但没想到可以反编译。。。
rpg_caidao 2012-09-17
  • 打赏
  • 举报
回复
我也遇到这个问题了,我用dictionary<string,object>,object是list<T>,我也想转换啊,一个一个去判断有点麻烦
rpg_caidao 2012-09-17
  • 打赏
  • 举报
回复
晕,自己想复杂了,不需要这样的,可以直接遍历object的


for (int dtCount = 0; dtCount < dt.Count; dtCount++)
{
string strClassName = dt.ElementAt(dtCount).Key;
object objData = dt.ElementAt(dtCount).Value;
if (objData.GetType().IsGenericType)
{
System.Collections.ICollection iList = objData as System.Collections.ICollection;
foreach (object model in iList)
{


}
}
}

夜色镇歌 2012-02-27
  • 打赏
  • 举报
回复
我怎么感觉直接把需要的类型加到List<>里面就行了。。

为什么还要转换呢
newdigitime 2012-02-27
  • 打赏
  • 举报
回复

List<object> L=new List<object>();
L.Add(data);
newdigitime 2012-02-27
  • 打赏
  • 举报
回复

list<object> l=new list<object>;
I.Add(data);
a157147899 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aspwebchh 的回复:]
引用 4 楼 a157147899 的回复:

关键是 这个方法内 事先并不知道 T的类型

是要动态根据T的类型来转换这个Object类型的Data
方法内不知道
那方法外面能不能确定?
[/Quote]
调用方法时 也是不能确定,如果能确定的话,就可以直接写个重载的方法了
如下:

public void CheckType<T>(object data)
{
}

a157147899 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yeness 的回复:]
public void CheckType(object[] data,List<类> list)
{
string Id=object[0];
string Name=Object[1];


类 对象=new 类();
对象.Id=Id;
对象.Name=Name;
list.Add(对象);
}
[/Quote]

不是这个意思,我给这个方法传入的参数就是 List<T>
挨踢直男 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 a157147899 的回复:]

关键是 这个方法内 事先并不知道 T的类型

是要动态根据T的类型来转换这个Object类型的Data
[/Quote]
方法内不知道
那方法外面能不能确定?
xuan.ye 2012-02-27
  • 打赏
  • 举报
回复
public void CheckType(object[] data,List<类> list)
{
string Id=object[0];
string Name=Object[1];


类 对象=new 类();
对象.Id=Id;
对象.Name=Name;
list.Add(对象);
}
xuan.ye 2012-02-27
  • 打赏
  • 举报
回复
public void CheckType(object data)
{
if (data.GetType().IsGenericType)
{
//这里我想把data转换我的List<T>,不知道该怎么转。
//下面这句能获取泛型的类型形参,但是我该怎么用它来转换data?
Type type = data.GetType().GetGenericArguments()[0];
//data=(List<T>)data;就是这个意思,但是这个T该怎么弄。
}
}
//object 貌似应该是object[] 吧?
a157147899 2012-02-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 a346729576 的回复:]
需要反射吧
[/Quote]
是的,这里肯定要用反射。就是不知道怎么搞,大牛来指点下吧。
a157147899 2012-02-27
  • 打赏
  • 举报
回复
关键是 这个方法内 事先并不知道 T的类型

是要动态根据T的类型来转换这个Object类型的Data
夜色镇歌 2012-02-27
  • 打赏
  • 举报
回复
需要反射吧
anliuty 2012-02-27
  • 打赏
  • 举报
回复
T要传具体的类型,比如List<string>
a157147899 2012-02-27
  • 打赏
  • 举报
回复
吃饭时间了!
加载更多回复(22)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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