ホームページ >バックエンド開発 >C++ >C# で型の継承 (基本クラス自体を含む) を確実にチェックするにはどうすればよいですか?

C# で型の継承 (基本クラス自体を含む) を確実にチェックするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-09 15:01:43527ブラウズ

How Can I Reliably Check for Type Inheritance (Including the Base Class Itself) in C#?

信頼性の高い 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>

このメソッドは、potentialDescendantpotentialBase のサブクラスであるか、または IsSubclassOf と同一であるかを正確に判断します。

チェックと直接の等価比較を組み合わせて、包括的かつ正確な継承検証を保証します。

以上がC# で型の継承 (基本クラス自体を含む) を確実にチェックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。