能不能把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函数。