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