首页 >后端开发 >C++ >如何在 C# 中可靠地识别泛型类的派生类?

如何在 C# 中可靠地识别泛型类的派生类?

DDD
DDD原创
2025-01-24 18:57:16411浏览

How Can I Reliably Identify Derived Classes from a Generic Class in C#?

在 C# 中识别泛型类的派生类

面向对象编程中的继承允许类扩展其父类的功能。在使用泛型类时,确定一个类是否派生自特定的泛型类可能很有帮助。但是,检查 IsSubclassOf 属性可能无法按预期工作。

为了解决这个问题,我们可以使用 IsSubclassOfRawGeneric 方法,该方法将父类的泛型类型定义与提供的类型进行比较。

以下代码片段演示了如何使用此方法:

<code class="language-csharp">static bool IsSubclassOfRawGeneric(Type generic, Type toCheck) {
    while (toCheck != null && toCheck != typeof(object)) {
        var cur = toCheck.IsGenericType ? toCheck.GetGenericTypeDefinition() : toCheck;
        if (generic == cur) {
            return true;
        }
        toCheck = toCheck.BaseType;
    }
    return false;
}</code>

通过比较泛型类型定义而不是完全限定类型名称,IsSubclassOfRawGeneric 方法可以准确地确定一个类是否派生自泛型类。

以上是如何在 C# 中可靠地识别泛型类的派生类?的详细内容。更多信息请关注PHP中文网其他相关文章!

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