MethodInfo.IsGenericMethodDefinition 屬性

定義

取得值,表示目前的 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使用 屬性來判斷型別自變數是否已指派給泛型方法的類型參數。 如果已指派類型自變數, 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 的方法主體包含對方法 N 的呼叫,指定 M 的類型參數和型別 Int32。 方法 的屬性 IsGenericMethodDefinition 會傳 N<V,int>回 false。

注意

雖然在類別 C 上反映時未遇到開放式建構方法 N<V,int> ,但必須使用 來產生 MakeGenericMethod 它,才能將 C 發出為動態類別。

如果泛型方法定義包含宣告型別的泛型參數,則每個建構型別都有特定的泛型方法定義。 例如,請考慮下列 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() {...};
};
```

在 Visual Basic) 的建構型 C<int> 別 (C(Of Integer) 中,泛型方法 M 會傳 B<int, S>回 。 開啟的類型 C<T>中,M 會傳 B<T, S>回 。 在這兩種情況下, IsGenericMethodDefinition 屬性會 trueMethodInfo 回代表 M 的 。

如需泛型方法特定詞彙的不變異條件清單,請參閱 IsGenericMethod 屬性。 如需泛型反映中其他詞彙的不變異條件清單,請參閱 IsGenericType 屬性。

適用於

另請參閱