MethodInfo.IsGenericMethodDefinition プロパティ
メモ : このプロパティは、.NET Framework version 2.0 で新しく追加されたものです。
現在の MethodInfo がジェネリック メソッドの定義を表しているかどうかを示す値を取得します。
名前空間: System.Reflection
アセンブリ: mscorlib (mscorlib.dll 内)
構文
プロパティ値
MethodInfo オブジェクトがジェネリック メソッドの定義を表している場合は true。それ以外の場合は false。

現在の MethodInfo がジェネリック メソッド定義を表している場合は、次の処理が行われます。
IsGenericMethodDefinition プロパティを使用して、型引数がジェネリック メソッドの型パラメータに割り当てられているかどうかを判断します。型引数が割り当てられている場合は、型引数の一部が、包含する型の型パラメータを表す Type オブジェクトであっても、IsGenericMethodDefinition プロパティは false を返します。例として、C#、Visual Basic、および C++ の各コードを次に示します。
class C { T N<T,U>(T t, U u) {...} public V M<V>(V v) { return N<V,int>(v, 42); } } Class C Public Function N(Of T,U)(ByVal ta As T, ByVal ua As U) As T ... End Function Public Function M(Of V)(ByVal va As V ) As V Return N(Of V, Integer)(va, 42) End Function End Class ref class C { private: generic <typename T, typename U> T N(T t, U u) {...} public: generic <typename V> V M(V v) { return N<V, int>(v, 42); } };
M のメソッド本体には、M の型パラメータおよび Int32 型を指定した、N メソッドへの呼び出しが格納されます。IsGenericMethodDefinition プロパティは、N<V,int> メソッドに対して false を返します。
![]() |
---|
C クラスを検索して、オープン構築メソッドである N<V,int> が見つからなくても、動的クラスとして C を出力するために、MakeGenericMethod を使用して、このメソッドを生成する必要があります。 |
ジェネリック メソッド定義に宣言型のジェネリック パラメータが含まれている場合は、構築された各型に固有のジェネリック メソッド定義になります。例として、C# コードおよび Visual Basic コードを次に示します。
class B<U,V> {} class C<T> { public B<T,S> M<S>() {...}} Class B(Of U, V) End Class Class C(Of T) Public Function M(Of S)() As B(Of T, S) ... End Function End Class generic <typename U, typename V> ref class B {}; generic <typename T> ref class C { public: generic <typename S> B<T,S>^ M() {...}; };
構築型 C<int> (Visual Basic の場合は C(Of Integer)) では、ジェネリック メソッドの M は B<int, S> を返します。オープン型 C<T> では、M は B<T, S> を返します。どちらの場合も、IsGenericMethodDefinition プロパティは、M を表す MethodInfo に対して true を返します。
ジェネリック メソッドに固有の用語に関する一定の条件の一覧については、IsGenericMethod プロパティのトピックを参照してください。ジェネリック リフレクションで使用されるその他の用語に関する一定の条件の一覧については、IsGenericType のプロパティのトピックを参照してください。

IsGenericMethodDefinition プロパティを使用して、MethodInfo がジェネリック メソッド定義を表しているかどうかを示すメッセージを表示するコード例を次に示します。
このコード例は、MakeGenericMethod メソッドのトピックで取り上げているコード例の一部分です。
Console.WriteLine(vbTab _
& "Is this a generic method definition? {0}",
_
mi.IsGenericMethodDefinition)
Console.WriteLine("\tIs this a generic method definition? {0}", mi.IsGenericMethodDefinition);
Console::WriteLine("\tIs this a generic method definition? {0}", mi->IsGenericMethodDefinition);

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からMethodInfo.IsGenericMethodDefinition プロパティを検索する場合は、下記のリンクをクリックしてください。

- MethodInfo.IsGenericMethodDefinition プロパティのページへのリンク