假如我现在有一个如下签名的函数
public static void ShrinkList(IList pTarget);
在这个函数中我声明了一个字段
ArrayList list =new ArrayList();
我希望对list进行类型检测,看它是否是pTarget对象的[子]类型。
期望的代码是
if(list is pTarget.GetType())
   ...
但编译不通过。看了看is与as的语法,好象这2个关键字都是在编译时进行类型检查的,无法应用于运行时类型检查。
C#中有没有其他方法可以实现上面所说的类型校验呢?

解决方案 »

  1.   

    用pTarget.GetType()的類型替換pTarget.GetType()
      

  2.   

    ??
    直接
    list is IList;
    or
    Type t = list.GetType();
    t.GetInterfaceMap( pTarget ) != null
      

  3.   

    是vs2005就用泛型的List吧運行期檢查沒有效率
    public static void ShrinkList(IList pTarget);
    {
     ArrayList list =new ArrayList();
     foreach(object obj in list )
    {
       if((obj.GetType()==pTarget.GetType())||obj.GetType().IsSubclassOf(pTarget.GetType()))
      {
         ///一樣的類或者子類
       }    }}