可靠的 C# 类型继承检查:包括基类
在C#中验证类型继承,包括类型是否是基类本身,需要仔细考虑。 标准 typeof(SubClass).IsSubclassOf(typeof(BaseClass))
方法适用于子类,但在将类型与其自己的基类进行比较时失败(返回 false
)。
解决现有方法的局限性
存在多种方法,每种方法都有局限性:
Type.IsSubclassOf
: 仅标识子类,而不标识基类本身。Type.IsAssignableFrom
: 包括基类,但对于具有隐式或显式转换的不相关类型可能返回 true
。is
和 as
运算符: 对对象进行操作,而不是直接对 Type
对象进行操作。稳健的解决方案:IsSameOrSubclass
方法
为了克服这些限制,自定义方法提供了可靠的解决方案:
<code class="language-csharp">public static bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant) { return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase; }</code>
此方法准确确定 potentialDescendant
是否是 potentialBase
的子类或相同。 它将IsSubclassOf
检查与直接相等比较相结合,确保全面而准确的继承验证。
以上是如何可靠地检查 C# 中的类型继承(包括基类本身)?的详细内容。更多信息请关注PHP中文网其他相关文章!