信頼性の高い 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 中国語 Web サイトの他の関連記事を参照してください。