ホームページ >バックエンド開発 >C++ >実行時に C# でジェネリック型を確実にテストするにはどうすればよいですか?

実行時に C# でジェネリック型を確実にテストするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-06 15:32:40817ブラウズ

How Can I Reliably Test for Generic Types in C# at Runtime?

型リフレクションを使用した C# でのジェネリック型推論のテスト

C# では、ジェネリック型変数に値を代入するにはコンパイル時に型推論が必要です値の実際の型を決定します。これは、実行時にオブジェクトがジェネリック型であるかどうかをテストしようとするときに混乱を招く可能性があります。

元のコードに見られるように、一般的なアプローチの 1 つは、オブジェクトの型をジェネリック型定義と比較することです。 。ただし、これは、特定の型引数を持つジェネリック インスタンスでは機能しません。

オブジェクトがジェネリック型のインスタンスであるかどうかを正しくテストするには、System.Type:

bool isGeneric = list.GetType().IsGenericType;
型引数に関係なく、オブジェクトがジェネリック型のインスタンスである場合、これは true を返します。

オブジェクトがジェネリック型であるかどうかを特にテストする必要がある場合汎用 List のインスタンスです。型の場合、GetGenericTypeDefinition メソッドを使用して、オブジェクトの型定義を List の定義と比較できます。

bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);
これは、オブジェクトが List のインスタンスである場合に true を返します。

どちらのアプローチでも、型が正確に等価であるかどうかがチェックされることに注意してください。オブジェクトがジェネリック型から派生している場合、これらのテストは false を返します。

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

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