次の方法で共有


ジェネリックとリフレクション

共通言語ランタイム (CLR) は実行時にジェネリック型情報にアクセスできるため、リフレクションを使用して、非ジェネリック型の場合と同じ方法でジェネリック型に関する情報を取得できます。 詳細については、「 ランタイムのジェネリック」を参照してください。

System.Reflection.Emit名前空間には、ジェネリックをサポートする新しいメンバーも含まれています。 「 方法: リフレクション出力を使用してジェネリック型を定義する」を参照してください。

ジェネリック リフレクションで使用される用語の不変条件の一覧については、 IsGenericType プロパティの解説を参照してください。

  • IsGenericType: 型がジェネリックの場合は true を返します。
  • GetGenericArguments: 構築された型に指定された型引数、またはジェネリック型定義の型パラメーターを表す Type オブジェクトの配列を返します。
  • GetGenericTypeDefinition: 現在構築されている型の基になるジェネリック型定義を返します。
  • GetGenericParameterConstraints: 現在のジェネリック型パラメーターの制約を表す Type オブジェクトの配列を返します。
  • ContainsGenericParameters: 型またはその外側の型またはメソッドに、特定の型が指定されていない型パラメーターが含まれている場合は true を返します。
  • GenericParameterAttributes: 現在のジェネリック型パラメーターの特殊な制約を記述する GenericParameterAttributes フラグの組み合わせを取得します。
  • GenericParameterPosition: 型パラメーターを表す Type オブジェクトの場合、ジェネリック型定義または型パラメーターを宣言したジェネリック メソッド定義の型パラメーター リスト内の型パラメーターの位置を取得します。
  • IsGenericParameter: 現在の Type がジェネリック型またはメソッド定義の型パラメーターを表すかどうかを示す値を取得します。
  • IsGenericTypeDefinition: 現在の Type が、他のジェネリック型を構築できるジェネリック型定義を表すかどうかを示す値を取得します。 型がジェネリック型の定義を表す場合は true を返します。
  • DeclaringMethod: 現在のジェネリック型パラメーターを定義したジェネリック メソッドを返します。型パラメーターがジェネリック メソッドによって定義されていない場合は null を返します。
  • MakeGenericType: 型の配列の要素を現在のジェネリック型定義の型パラメーターに置き換え、結果として構築された型を表す Type オブジェクトを返します。

さらに、 MethodInfo クラスのメンバーは、ジェネリック メソッドの実行時情報を有効にします。 ジェネリック メソッドに反映するために使用される用語の不変条件の一覧については、 IsGenericMethod プロパティの解説を参照してください。

  • IsGenericMethod: メソッドがジェネリックの場合は true を返します。
  • GetGenericArguments: 構築されたジェネリック メソッドの型引数またはジェネリック メソッド定義の型パラメーターを表す Type オブジェクトの配列を返します。
  • GetGenericMethodDefinition: 現在構築されているメソッドの基になるジェネリック メソッド定義を返します。
  • ContainsGenericParameters: メソッドまたはそれを囲む型に、特定の型が指定されていない型パラメーターが含まれている場合には、true を返します。
  • IsGenericMethodDefinition: 現在の MethodInfo がジェネリック メソッドの定義を表す場合は true を返します。
  • MakeGenericMethod: 型の配列の要素を現在のジェネリック メソッド定義の型パラメーターに置き換え、結果として構築されたメソッドを表す MethodInfo オブジェクトを返します。

こちらも参照ください