我使用“is”运算符来查找某个类:
for(int i=0; i<screens.Count; i++){
if(screen is ScreenBase){
//do something...
}
}
这工作得很好,特别是当它找到从 ScreenBase 继承的任何类但不是从 ScreenBase 继承的基类时。
当我只知道类型并且不想实例化该类时,我想做同样的事情:
Type screenType = GetType(line);
if (screenType is ScreenBase)
但这种比较会产生警告,因为它将与“Type”类进行比较。
我知道的唯一选择是与 ==typeof 进行比较,但这只会测试确切的类型,而不是继承的类型。
有没有办法获得类似于“is”运算符的类似行为,但对于 Type 类描述的类型?
我知道的唯一选择是与 ==typeof 进行比较,但这只会测试确切的类型,而不是继承的类型。有没有办法获得类似于“is”运算符的类似行为,但对于 Type 类描述的类型?
If GetType(line)
返回一个类型(顺便说一句,我建议一个更好的名称),您可以使用Type.IsAssignableFrom http://msdn.microsoft.com/en-us/library/system.type.isassignablefrom.aspx:
if (typeof(ScreenBase).IsAssignableFrom(GetType(line)))
{
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)