遇到个问题就是
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...

解决方案 »

  1.   

    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;
        }
    }
      

  2.   

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