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場合、型引数の一部がType 、外側の型の型パラメーターを表すオブジェクトであっても、プロパティは false を返します。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 のメソッド本体には、M の型パラメーターと型Int32を指定して、メソッド N への呼び出しが含まれています。The method body of M contains a call to method N, specifying the type parameter of M and the type Int32. プロパティIsGenericMethodDefinitionは、メソッドN<V,int>に対して false を返します。The IsGenericMethodDefinition property returns false for method N<V,int>.

注意

オープンに構築されN<V,int>たメソッドは、クラス c をリフレクションするときには発生しMakeGenericMethodませんが、動的クラスとして c を生成するためにを使用して生成する必要があります。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プロパティはtrue M をMethodInfo表すに対してを返します。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.

適用対象

こちらもご覧ください