我想将对象的类型与类型进行比较,看它们是否相同。我没有对象,只有对象的类型。
我可以做type1 == type2
并获得一般平等
我可以有一个递归循环,我在type1.BaseType
重复上述步骤,直到BaseType为空。
我可以type1.GetInterface( type2.FullName ) != null
检查type2是否是type1的接口
如果我把它们放在一起,我就会
if ( type2.IsInterface )
return type1.GetInterface( type2.FullName ) != null;
while ( type1 != null ) {
if ( type1 == type2 )
return true;
type1 = type1.BaseType;
}
return false;
所有is
关键字都是。我无法找到正确的关键字插入Reflector搜索以找到该功能,谷歌搜索“是”并没有真正的帮助
答案 0 :(得分:6)
is(the standard的§14.9.10)通常使用isinst,但如果编译时类型通过某些转换兼容,则不需要。
Type对象的等效(反向)是IsAssignableFrom。所有这些都是真的:
"foo" is String;
"foo" is object;
typeof(String).IsAssignableFrom("foo".GetType());
typeof(object).IsAssignableFrom("foo".GetType());