Bagikan melalui


MethodInfo.IsGenericMethodDefinition Properti

Definisi

Mendapatkan nilai yang menunjukkan apakah saat ini MethodInfo 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 yang mencakup jenis. Misalnya, pertimbangkan kode C#, Visual Basic, dan C++ berikut:

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

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

Catatan

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

Jika definisi metode generik menyertakan parameter generik dari jenis deklarasikan, akan ada definisi metode generik khusus untuk setiap jenis yang dibangun. Misalnya, pertimbangkan kode C# dan Visual Basic 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 C<int> yang dibangun (C(Of Integer) dalam 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 kondisi invarian untuk istilah khusus untuk metode generik, lihat IsGenericMethod properti . Untuk daftar kondisi invarian untuk istilah lain yang digunakan dalam refleksi generik, lihat IsGenericType properti .

Berlaku untuk

Lihat juga