我想在Canvas的子节点中检查类型,而不管继承树。所以我做了一个可重复使用的功能,如下所示。
private int FindIndexOf(Type _t)
{
if (wrappingGrid == null)
return -1;
for(int i =0; i< wrappingGrid.Children.Count; ++i)
{
if(wrappingGrid.Children[i].GetType() == _t)
{
return i;
}
}
return -1;
}
但它只适用于type-strict。
wrappingGrid.Children[i] is _t
这不起作用,因为&#39; Type&#39;类型不是我想要比较的。它会导致语法错误。 可能我需要制作模板功能。 但我最好编写更简单的代码。
我已经查看了其他文章。 Type Checking: typeof, GetType, or is?
你知道吗? 提前谢谢..答案 0 :(得分:5)
也许你应该尝试wrappingGrid.Children[i].GetType().IsSubClassOf(_t)
EDIT @usr: 是的:IsAssignableFrom更好,但之后必须被称为反之亦然:
_t.IsAssignableFrom(wrappingGrid.Children[i].GetType()