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 サイトの他の関連記事を参照してください。