MethodInfo.IsGenericMethodDefinition MethodInfo.IsGenericMethodDefinition MethodInfo.IsGenericMethodDefinition MethodInfo.IsGenericMethodDefinition Property

定義

現在の MethodInfo がジェネリック メソッドの定義を表しているかどうかを示す値を取得します。Gets a value indicating whether the current MethodInfo represents the definition of a generic method.

public:
 virtual property bool IsGenericMethodDefinition { bool get(); };
public override bool IsGenericMethodDefinition { get; }
member this.IsGenericMethodDefinition : bool
Public Overrides ReadOnly Property IsGenericMethodDefinition As Boolean

プロパティ値

MethodInfo オブジェクトがジェネリック メソッドの定義を表している場合は true。それ以外の場合は falsetrue if the MethodInfo object represents the definition of a generic method; otherwise, false.

次のコード例では、IsGenericMethodDefinitionプロパティを示すメッセージを表示するかどうかをMethodInfoジェネリック メソッド定義を表します。The following code example uses the IsGenericMethodDefinition property to display a message indicating whether a MethodInfo represents a generic method definition.

この例が示されている例の一部、MakeGenericMethodメソッド。This example is part of a larger example provided for the MakeGenericMethod method.

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);

注釈

場合、現在MethodInfoジェネリック メソッド定義を表します。If the current MethodInfo represents a generic method definition, then:

使用して、IsGenericMethodDefinitionプロパティを型引数がジェネリック メソッドの型パラメーターに割り当てられているかどうかを判断します。Use the IsGenericMethodDefinition property to determine whether type arguments have been assigned to the type parameters of a generic method. 型引数が割り当てられている場合、IsGenericMethodDefinitionいくつかの型引数がある場合でも、プロパティが false を返しますType外側の型の型パラメーターを表すオブジェクト。If type arguments have been assigned, the IsGenericMethodDefinition property returns false even if some of the type arguments are Type objects that represent type parameters of enclosing types. たとえば、次の C#、Visual Basic、および C++ コード。For example, consider the following C#, Visual Basic, and C++ code:

```cs
class C
{
    T N<T,U>(T t, U u) {...}
    public V M<V>(V v)
    {
        return N<V,int>(v, 42);
    }
}
```

```vb
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
```

```cpp
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 には N、M と型の型パラメーターを指定するメソッドの呼び出しが含まれていますInt32します。The method body of M contains a call to method N, specifying the type parameter of M and the type Int32. IsGenericMethodDefinitionプロパティ メソッドの false を返しますN<V,int>します。The IsGenericMethodDefinition property returns false for method N<V,int>.

注意

構築されるメソッドをオープンN<V,int>がクラス C 経由でリフレクション時に発生しないにする必要がありますを使用して生成MakeGenericMethodC として、動的クラスを生成するためにします。Although the open constructed method N<V,int> is not encountered when reflecting over class C, it must be generated using MakeGenericMethod in order to emit C as a dynamic class.

ジェネリック メソッド定義には、宣言型のジェネリック パラメーターが含まれている場合がありますジェネリック メソッド定義を各構築型を特定します。If a generic method definition includes generic parameters of the declaring type, there will be a generic method definition specific to each constructed type. たとえば、次の C#および Visual Basic コード。For example, consider the following C# and Visual Basic code:

```csharp
class B<U,V> {}
class C<T> { public B<T,S> M<S>() {...}}
```

```vb
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
```

```cpp
generic <typename U, typename V> ref class B {};
generic <typename T> ref class C
{
public:
    generic <typename S> B<T,S>^ M() {...};
};
```

構築された型でC<int>(C(Of Integer) Visual basic)、ジェネリック メソッド M を返しますB<int, S>します。In the constructed type C<int> (C(Of Integer) in Visual Basic), the generic method M returns B<int, S>. オープン型でC<T>、M 返しますB<T, S>します。In the open type C<T>, M returns B<T, S>. どちらの場合で、IsGenericMethodDefinitionプロパティが返すtrueMethodInfoM を表します。In both cases, the IsGenericMethodDefinition property returns true for the MethodInfo that represents M.

ジェネリック メソッドに固有の用語に対するインバリアント条件の一覧を参照してください、IsGenericMethodプロパティ。For a list of the invariant conditions for terms specific to generic methods, see the IsGenericMethod property. ジェネリック リフレクションで使用されるその他の用語に対するインバリアント条件の一覧を参照して、IsGenericTypeプロパティ。For a list of the invariant conditions for other terms used in generic reflection, see the IsGenericType property.

適用対象

こちらもご覧ください