ホームページ >バックエンド開発 >C++ >C# で空のジェネリック リスト内の T の型を判断するにはどうすればよいですか?

C# で空のジェネリック リスト内の T の型を判断するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-08 18:51:50187ブラウズ

How Can I Determine the Type of T in an Empty Generic List in C#?

C# の汎用リストと型情報の取得

オブジェクト指向プログラミングのリフレクション メカニズムにより、開発者は実行時に型の構造と動作を検査できます。ジェネリック コレクション (List<T> など) を使用する場合、その型のオブジェクトにアクセスまたは作成するには、ジェネリック パラメーター T の型を取得する必要があります。

SomList という名前の List<SomeClass> プロパティを含むオブジェクトがあるとします。 SomList が空の場合、汎用リスト内の T の型を決定するにはどうすればよいですか?

この質問に答えるためにコード例を分析してみましょう:

<code class="language-csharp">// 假设 "GetListType" 是您用来检索类型的函数。
private Type GetListType(object myObject)
{
    Type type = myObject.GetType();
    if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
    {
        Type[] typeArguments = type.GetGenericArguments();
        Type itemType = typeArguments[0]; // 这是泛型列表参数 `T` 的类型。
        return itemType;
    }

    throw new ArgumentException("对象不包含泛型列表属性。");
}</code>

この改良されたコードでは、入力としてオブジェクトを受け取り、オブジェクトに空のジェネリック リスト プロパティが含まれている場合は GetListType の型を返す T という名前のメソッドを作成します。

このメソッドはリフレクションを使用して、オブジェクトの型がジェネリック型であるかどうか、およびジェネリック定義が List<> 型と一致するかどうかを判断します。これらの条件が満たされる場合、コードは型パラメーター (この場合、型パラメーターは 1 つだけです) を取得し、それを T の型として返します。

このコードは、プロパティの値がアクセス可能 (null 以外) であることに依存していることに注意することが重要です。あなたのシナリオでは、SomList が空の場合、null 値をチェックし、それに応じて処理することができます。

この改訂された応答は、元のイメージを維持し、説明の明確さと流れを改善し、リストが空の場合でも型 T を決定するという中心的な問題に対処します。主な変更点は、List<> 型定義の処理です。より正確には。

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

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