MethodInfo.GetGenericArguments Metode

Definisi

Mengembalikan array Type objek yang mewakili argumen jenis metode generik atau parameter jenis definisi metode generik.

public:
 override cli::array <Type ^> ^ GetGenericArguments();
public override Type[] GetGenericArguments ();
[System.Runtime.InteropServices.ComVisible(true)]
public override Type[] GetGenericArguments ();
override this.GetGenericArguments : unit -> Type[]
[<System.Runtime.InteropServices.ComVisible(true)>]
override this.GetGenericArguments : unit -> Type[]
Public Overrides Function GetGenericArguments () As Type()

Mengembalikan

Type[]

Array Type objek yang mewakili argumen jenis metode generik atau parameter jenis definisi metode generik. Mengembalikan array kosong jika metode saat ini bukan metode generik.

Atribut

Pengecualian

Metode ini tidak didukung.

Contoh

Contoh kode berikut menunjukkan cara mendapatkan argumen jenis metode generik dan menampilkannya.

Contoh ini adalah bagian dari contoh yang lebih besar yang disediakan untuk metode .MakeGenericMethod

// If this is a generic method, display its type arguments.
//
if (mi->IsGenericMethod)
{
    array<Type^>^ typeArguments = mi->GetGenericArguments();

    Console::WriteLine("\tList type arguments ({0}):", 
        typeArguments->Length);

    for each (Type^ tParam in typeArguments)
    {
        // IsGenericParameter is true only for generic type
        // parameters.
        //
        if (tParam->IsGenericParameter)
        {
            Console::WriteLine("\t\t{0}  parameter position {1}" +
                "\n\t\t   declaring method: {2}",
                tParam,
                tParam->GenericParameterPosition,
                tParam->DeclaringMethod);
        }
        else
        {
            Console::WriteLine("\t\t{0}", tParam);
        }
    }
}
// If this is a generic method, display its type arguments.
//
if (mi.IsGenericMethod)
{
    Type[] typeArguments = mi.GetGenericArguments();

    Console.WriteLine("\tList type arguments ({0}):",
        typeArguments.Length);

    foreach (Type tParam in typeArguments)
    {
        // IsGenericParameter is true only for generic type
        // parameters.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}  parameter position {1}" +
                "\n\t\t   declaring method: {2}",
                tParam,
                tParam.GenericParameterPosition,
                tParam.DeclaringMethod);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}
' If this is a generic method, display its type arguments.
'
If mi.IsGenericMethod Then
    Dim typeArguments As Type() = mi.GetGenericArguments()
    
    Console.WriteLine(vbTab & "List type arguments ({0}):", _
        typeArguments.Length)
    
    For Each tParam As Type In typeArguments
        ' IsGenericParameter is true only for generic type
        ' parameters.
        '
        If tParam.IsGenericParameter Then
            Console.WriteLine(vbTab & vbTab _
                & "{0}  parameter position: {1}" _
                & vbCrLf & vbTab & vbTab _
                & "   declaring method: {2}", _
                tParam,  _
                tParam.GenericParameterPosition, _
                tParam.DeclaringMethod)
        Else
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        End If
    Next tParam
End If

Keterangan

Elemen array yang dikembalikan berada dalam urutan muncul dalam daftar parameter jenis untuk metode generik.

  • Jika metode saat ini adalah metode yang dibangun tertutup (yaitu, ContainsGenericParameters properti mengembalikan false), array yang dikembalikan oleh GetGenericArguments metode berisi jenis yang telah ditetapkan ke parameter jenis generik dari definisi metode generik.

  • Jika metode saat ini adalah definisi metode generik, array berisi parameter jenis.

  • Jika metode saat ini adalah metode yang dibangun terbuka (yaitu, ContainsGenericParameters properti mengembalikan true) di mana jenis tertentu telah ditetapkan ke beberapa parameter jenis dan parameter jenis dari jenis enclosing generic telah ditetapkan ke parameter jenis lain, array berisi parameter jenis dan jenis. IsGenericParameter Gunakan properti untuk membedakannya. Untuk demonstrasi skenario ini, lihat contoh kode untuk ContainsGenericParameters properti .

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 Type.IsGenericType properti .

Berlaku untuk

Lihat juga