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

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

Susan Sarandon
发布: 2025-01-24 18:47:09
原创
711 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板