首页 >后端开发 >C++ >在 C# 中如何确定一个类是否派生自泛型类?

在 C# 中如何确定一个类是否派生自泛型类?

Susan Sarandon
Susan Sarandon原创
2025-01-24 18:47:09712浏览

How Can I Determine if a Class Is Derived from a Generic Class in C#?

>识别从C#

中的通用类识别继承 面向对象的编程利用类继承来创建层次关系。 确定继承时,C#的通用类会引入一层复杂性。本文探讨了验证是否从通用类派生的类别的挑战。

>

直接在通用类型定义上直接使用

的通用方法失败。 解决方案在于采用自定义方法IsSubclassOf,该方法有效地处理通用类型的比较。IsSubclassOfRawGeneric

这是解决方案:

<code class="language-csharp">static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) {
    while (toCheck != null && toCheck != typeof(object)) {
        Type cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck;
        if (generic == cur) {
            return true;
        }
        toCheck = toCheck.BaseType;
    }
    return false;
}</code>
此函数通过获得通用类型定义;否则,它使用类型本身。 然后,该函数将其与toCheck(要检查的通用类型定义)进行比较。 匹配表示从指定的通用类的继承。GetGenericTypeDefinition() generic此方法提供了一个可靠的解决方案,用于确定类是否从C#中的通用类继承,在此特定情况下克服标准方法的局限性。

以上是在 C# 中如何确定一个类是否派生自泛型类?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn