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