ホームページ >バックエンド開発 >C++ >クラスが C# のジェネリック クラスから派生しているかどうかを確認するにはどうすればよいですか?

クラスが C# のジェネリック クラスから派生しているかどうかを確認するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-24 18:47:09718ブラウズ

How Can I Determine if a Class Is Derived from a Generic Class in C#?

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()このメソッドは、クラスがC#の一般的なクラスから継承するかどうかを判断するための堅牢なソリューションを提供し、この特定のシナリオの標準genericメソッドの制限を克服します。

以上がクラスが C# のジェネリック クラスから派生しているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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