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

能不能把object转成它的GetType的类型
遇到个问题就是
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...

------解决方案--------------------
C# code
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;
    }
}

------解决方案--------------------
方法有3种:
一、笨办法,用if判断类型后,强制类型转换,如果你的类型不是很多,这种方法非常适合。
二、用接口进行转换,所有自定义类派生于统一的接口,实现公共方法。
三、用Emit动态创建你所谓的Func函数。