能不能把object转成它的GetType的类型

pengyou41 2012-10-16 02:27:02
遇到个问题就是
Func( IList l )//不带<T>在VS08能编译...貌似在10 就不行了..
{
foreach( object i in l )//var i in l 也不行
{
// 其实就这里想要跟着List中的元素不同调不同的重载函数
//这里的i.GetType 是正确的List中的类型
//Func( i ); //这里编不过 如果Func( (i.GetType)i ) 能不能到这个效果 或其他的办法
}
}
Func( int i ){}
Func( string s ){}
//...其他的重载

int [] arr = { 1,2 };
Func( arr );

Anyone can help me...
...全文
212 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengyou41 2012-10-16
  • 打赏
  • 举报
回复
C++用的模板撒..
看来就是 挨个判断类型 这个来得直接点了..
cheng2005 2012-10-16
  • 打赏
  • 举报
回复
C++连反射都没有,我就纳闷怎么会有这种设计。
qldsrx 2012-10-16
  • 打赏
  • 举报
回复
方法有3种:
一、笨办法,用if判断类型后,强制类型转换,如果你的类型不是很多,这种方法非常适合。
二、用接口进行转换,所有自定义类派生于统一的接口,实现公共方法。
三、用Emit动态创建你所谓的Func函数。
__天涯寻梦 2012-10-16
  • 打赏
  • 举报
回复
foreach (object i in l)
{
switch (i.GetType().FullName)
{
case "System.Int32":
Func((int)i);
break;
case "System.String":
Func((string)i);
break;
default:
break;
}
}
pengyou41 2012-10-16
  • 打赏
  • 举报
回复
对C#不是很熟 这些设计都是从C++来的
现在这个问题 能不能提供个解决思路..
cheng2005 2012-10-16
  • 打赏
  • 举报
回复
这种代码设计出来就是为了给别人重构的,碰到一些使用编程语言正常来做比较难解决的事情请先考虑自己的设计是不是合理。新手最喜欢写万能方法,其实万能方法就是最没用的方法。

110,537

社区成员

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

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

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