有没有办法检查类型而不管其继承树?但在功能里面

时间:2018-01-26 12:26:30

标签: c# wpf types gettype

我想在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?

你知道吗? 提前谢谢..

1 个答案:

答案 0 :(得分:5)

也许你应该尝试wrappingGrid.Children[i].GetType().IsSubClassOf(_t)

EDIT @usr: 是的:IsAssignableFrom更好,但之后必须被称为反之亦然:

_t.IsAssignableFrom(wrappingGrid.Children[i].GetType()