型リフレクションを使用した C# でのジェネリック型推論のテスト
C# では、ジェネリック型変数に値を代入するにはコンパイル時に型推論が必要です値の実際の型を決定します。これは、実行時にオブジェクトがジェネリック型であるかどうかをテストしようとするときに混乱を招く可能性があります。
元のコードに見られるように、一般的なアプローチの 1 つは、オブジェクトの型をジェネリック型定義と比較することです。 。ただし、これは、特定の型引数を持つジェネリック インスタンスでは機能しません。
オブジェクトがジェネリック型のインスタンスであるかどうかを正しくテストするには、System.Type:
bool isGeneric = list.GetType().IsGenericType;型引数に関係なく、オブジェクトがジェネリック型のインスタンスである場合、これは true を返します。オブジェクトがジェネリック型であるかどうかを特にテストする必要がある場合汎用 List
bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);これは、オブジェクトが List
以上が実行時に C# でジェネリック型を確実にテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。