假如我现在有一个如下签名的函数
public static void ShrinkList(IList pTarget);
在这个函数中我声明了一个字段
ArrayList list =new ArrayList();
我希望对list进行类型检测,看它是否是pTarget对象的[子]类型。
期望的代码是
if(list is pTarget.GetType())
...
但编译不通过。看了看is与as的语法,好象这2个关键字都是在编译时进行类型检查的,无法应用于运行时类型检查。
C#中有没有其他方法可以实现上面所说的类型校验呢?
public static void ShrinkList(IList pTarget);
在这个函数中我声明了一个字段
ArrayList list =new ArrayList();
我希望对list进行类型检测,看它是否是pTarget对象的[子]类型。
期望的代码是
if(list is pTarget.GetType())
...
但编译不通过。看了看is与as的语法,好象这2个关键字都是在编译时进行类型检查的,无法应用于运行时类型检查。
C#中有没有其他方法可以实现上面所说的类型校验呢?
解决方案 »
- 求一个vs的插件,在代码页点右键有个选项可以定位当前文件在解决方案资源管理器中的位置
- 谁有这个工具. 资源编辑工具呢? 我急需
- 急:c#中能否取得delphi编译的dll的函数参数值?
- 在MDI 程序里 为了好调用把子窗提定义成静态的 好吗??对程序有什么影响
- Updater Application Block 2.0在2000下的问题
- DropDownList绑定数据问题!!谢谢各位
- 欢迎讨论,大家在作OO设计时,如何表示对象集合的?
- 弹出消息框
- 为什么在vs中无法新建一个winform窗体
- visual c# 2010 无法更改输出目录?
- VS 2003怎么打开VS 2005创建的解决方案?
- 大虾们,帮帮小弟,很急
直接
list is IList;
or
Type t = list.GetType();
t.GetInterfaceMap( pTarget ) != null
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()))
{
///一樣的類或者子類
} }}