MethodInfo.IsGenericMethodDefinition Properti

Definisi

Mendapatkan nilai yang menunjukkan apakah MethodInfo saat ini mewakili definisi metode generik.

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

Nilai Properti

true MethodInfo jika objek mewakili definisi metode generik; jika tidak, false.

Contoh

Contoh kode berikut menggunakan IsGenericMethodDefinition properti untuk menampilkan pesan yang menunjukkan apakah mewakili MethodInfo definisi metode generik.

Contoh ini adalah bagian dari contoh yang lebih besar yang disediakan untuk metode .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);

Keterangan

Jika saat ini MethodInfo mewakili definisi metode generik, maka:

IsGenericMethodDefinition Gunakan properti untuk menentukan apakah argumen jenis telah ditetapkan ke parameter jenis metode generik. Jika argumen jenis telah ditetapkan, IsGenericMethodDefinition properti mengembalikan false meskipun beberapa argumen jenis adalah Type objek yang mewakili parameter jenis jenis jenis yang diapit. Sebagai contoh, perhatikan kode berikut:

 ```csharp
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);
    }
};
```

Isi metode M berisi panggilan ke metode N, menentukan parameter jenis M dan jenis Int32. Properti IsGenericMethodDefinition mengembalikan false untuk metode N<V,int>.

Note

Meskipun metode yang dibangun terbuka tidak ditemui saat mencerminkan kelas C, metode N<V,int> tersebut harus dihasilkan menggunakan MakeGenericMethod untuk memancarkan C sebagai kelas dinamis.

Jika definisi metode generik mencakup parameter generik dari jenis deklarasikan, akan ada definisi metode generik khusus untuk setiap jenis yang dibangun. Sebagai contoh, perhatikan kode berikut:

```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() {...};
};
```

Dalam jenis yang dibangun C<int> (C(Of Integer) di Visual Basic), metode generik M mengembalikan B<int, S>. Dalam jenis C<T>terbuka, M mengembalikan B<T, S>. Dalam kedua kasus, IsGenericMethodDefinition properti mengembalikan true untuk MethodInfo yang mewakili M.

Untuk daftar ketentuan invarian untuk istilah khusus untuk metode generik, lihat properti IsGenericMethod. Untuk daftar kondisi invarian untuk istilah lain yang digunakan dalam refleksi generik, lihat properti IsGenericType.

Berlaku untuk

Lihat juga