MethodInfo.IsGenericMethodDefinition プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在の MethodInfo がジェネリック メソッドの定義を表しているかどうかを示す値を取得します。
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
。それ以外の場合は false
。
例
次のコード例では、 プロパティを 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);
注釈
現在 MethodInfo の がジェネリック メソッド定義を表す場合は、次のようになります。
IsGenericMethodDefinition
は、true
を返します。メソッドによって返される配列内の各 Type オブジェクトについて、次の手順を GetGenericArguments() 実行します。
Type.IsGenericParameter プロパティは、
true
を返します。は Type.DeclaringMethod 現在 MethodInfoの を返します。
プロパティは Type.GenericParameterPosition 、配列内のオブジェクトの Type 位置と同じです。
プロパティを IsGenericMethodDefinition
使用して、ジェネリック メソッドの型パラメーターに型引数が割り当てられているかどうかを確認します。 型引数が割り当てられている場合、 IsGenericMethodDefinition
型引数の一部が外側の型の型パラメーターを表すオブジェクトである場合でも、 プロパティは Type false を返します。 たとえば、次の C#、Visual Basic、C++ コードを考えてみましょう。
```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 の型パラメーターと 型 を指定するメソッド N の呼び出しが Int32含まれています。 プロパティは IsGenericMethodDefinition
、メソッド N<V,int>
に対して false を返します。
注意
クラス C に反映する場合、オープン構築メソッド N<V,int>
は検出されませんが、C を動的クラスとして出力するには、 を使用して MakeGenericMethod 生成する必要があります。
ジェネリック メソッド定義に宣言型のジェネリック パラメーターが含まれている場合は、構築された各型に固有のジェネリック メソッド定義が存在します。 たとえば、次の C# と Visual Basic のコードを考えてみましょう。
```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>
。 開いている型 C<T>
では、M は を返します B<T, S>
。 どちらの場合も、 プロパティは M をIsGenericMethodDefinition
true
表す の をMethodInfo返します。
ジェネリック メソッドに固有の用語の不変条件の一覧については、 プロパティを IsGenericMethod 参照してください。 ジェネリック リフレクションで使用される他の用語の不変条件の一覧については、 プロパティを IsGenericType 参照してください。
適用対象
こちらもご覧ください
.NET