检查类是否是特定泛型的子类

多米尼克·乔纳斯

我有以下课程:

public class HtSecurePage : UserControl, IDisposable
{

}

public class HtSecureInstancePage<T1> : HtSecurePage
{

}

public partial class NormalPage : HtSecurePage
{

}

public partial class InstancePage : HtSecureInstancePage<ZlsManager>
{

}

要检查是否NormalPagesubClassHtSecurePage我用的是以下模式。

if (typeof(NormalPage).BaseType == typeof(HtSecurePage))
{

}

如果我对 使用此模式InstancePage,则它不起作用。

if (typeof(InstancePage).BaseType == typeof(HtSecureInstancePage<>))
{

}

我需要知道,如果一个Type是直接subClassHtSecurePageHtSecureInstancePage<>重要的是不要检查HtSecureInstancePage<ZlsManager>!)Type T1未知。

阿德姆·卡塔马克

下面的函数检查您的类的子类是否提供了相同类型的类。如果类型是泛型,则在泛型类型定义上执行检查操作。

方法使用

bool isInherited = CheckIsDirectlyInherited(typeof(TestAbstract), new[] {typeof(SecondLevelAbstractClass), typeof(FirstLevelAbstract)});

方法

bool CheckIsDirectlyInherited(Type obj, Type[] baseTypes)
{
    if (obj.BaseType == null)
        return false;

    var objGenericDefinition = obj.BaseType;
    if (objGenericDefinition.IsGenericType)
    {
        objGenericDefinition = objGenericDefinition.GetGenericTypeDefinition();
    }

    foreach (Type baseType in baseTypes)
    {
        var baseTypeDefinition = baseType;
        if (baseTypeDefinition.IsGenericType)
            baseTypeDefinition = baseType.GetGenericTypeDefinition();

        if (objGenericDefinition == baseTypeDefinition)
            return true;
    }

    return false;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

检查类中泛型类型是否为特定类型

来自分类Dev

检查泛型类

来自分类Dev

泛型类的 Autowire 子类

来自分类Dev

泛型:有没有办法让编译器检查T是否是特定的UIView子类?

来自分类Dev

检查泛型参数类型是否从某个类X派生

来自分类Dev

访问类型是泛型类的子类型?

来自分类Dev

Java泛型-类本身的子类?

来自分类Dev

泛型类和子类的数组

来自分类Dev

使用类泛型构造的子类型

来自分类Dev

如何确定泛型超类的特定子类的ACTUAL返回类型?

来自分类Dev

泛型类的子类型的隐式类

来自分类Dev

检查泛型T是否实现接口

来自分类Dev

Swift泛型类类型既是子类又符合协议

来自分类Dev

泛型类型子类

来自分类Dev

检查父类是否是子类的实例

来自分类Dev

Crystal 检查是否是类列表的子类

来自分类Dev

检查子类是否是父类的实例

来自分类Dev

使用泛型替换特定的类类型

来自分类Dev

如何将子类分配给非泛型类中的泛型字段

来自分类Dev

为什么不能将Objects数组转换为泛型类的泛型子类的数组?

来自分类Dev

泛型和继承:将泛型与基类及其子类一起使用

来自分类Dev

如何通过非泛型的子类从父类正确访问泛型方法?

来自分类Dev

有没有一种方法可以检查泛型类的字段是否存在?

来自分类Dev

Java-是否可以在没有未经检查的强制转换的情况下混合类型的容器(非泛型类)?

来自分类Dev

检查类是否为类的子类而不实例化

来自分类Dev

实现泛型的自定义类的数组不允许自定义类具有子类的泛型

来自分类Dev

获取使用特定泛型实现类的所有类

来自分类Dev

从Object,泛型类和通配符未经检查的类型转换

来自分类Dev

用子类创建泛型

Related 相关文章

热门标签

归档