Bagikan melalui


Type.GetGenericArguments Metode

Definisi

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

public:
 virtual cli::array <Type ^> ^ GetGenericArguments();
public virtual Type[] GetGenericArguments();
abstract member GetGenericArguments : unit -> Type[]
override this.GetGenericArguments : unit -> Type[]
Public Overridable Function GetGenericArguments () As Type()

Mengembalikan

Type[]

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

Pengecualian

Metode yang dipanggil tidak didukung di kelas dasar. Kelas turunan harus memberikan implementasi.

Contoh

Contoh kode berikut menggunakan GetGenericArguments metode untuk menampilkan argumen jenis jenis yang dibangun dan parameter jenis definisi jenis generiknya.

Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk IsGenericTypeDefinition properti . Lihat contoh yang lebih besar untuk contoh output.

if (t.IsGenericType)
{
    // If this is a generic type, display the type arguments.
    //
    Type[] typeArguments = t.GetGenericArguments();

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

    foreach (Type tParam in typeArguments)
    {
        // If this is a type parameter, display its
        // position.
        //
        if (tParam.IsGenericParameter)
        {
            Console.WriteLine("\t\t{0}\t(unassigned - parameter position {1})",
                tParam,
                tParam.GenericParameterPosition);
        }
        else
        {
            Console.WriteLine("\t\t{0}", tParam);
        }
    }
}
if t.IsGenericType then
    // If this is a generic type, display the type arguments.
    let typeArguments = t.GetGenericArguments()

    printfn $"\tList type arguments ({typeArguments.Length}):"

    for tParam in typeArguments do
        // If this is a type parameter, display its
        // position.
        if tParam.IsGenericParameter then
            printfn $"\t\t{tParam}\t(unassigned - parameter position {tParam.GenericParameterPosition})"
        else
            printfn $"\t\t{tParam}"
If t.IsGenericType Then
    ' If this is a generic type, display the type arguments.
    '
    Dim typeArguments As Type() = t.GetGenericArguments()
    
    Console.WriteLine(vbTab & "List type arguments (" _
        & typeArguments.Length & "):")
    
    For Each tParam As Type In typeArguments
        ' If this is a type parameter, display its position.
        '
        If tParam.IsGenericParameter Then
            Console.WriteLine(vbTab & vbTab & tParam.ToString() _
                & vbTab & "(unassigned - parameter position " _
                & tParam.GenericParameterPosition & ")")
        Else
            Console.WriteLine(vbTab & vbTab & tParam.ToString())
        End If
    Next tParam
End If

Keterangan

Elemen array dikembalikan dalam urutan muncul dalam daftar argumen jenis untuk jenis generik.

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

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

  • Jika jenis saat ini adalah jenis yang dibangun terbuka (yaitu, ContainsGenericParameters properti mengembalikan true) di mana jenis tertentu belum ditetapkan ke semua parameter jenis dan parameter jenis yang mencakup jenis atau metode generik, array berisi parameter jenis dan jenis. IsGenericParameter Gunakan properti untuk membedakannya. Untuk demonstrasi skenario ini, lihat contoh kode untuk ContainsGenericParameters properti .

Untuk daftar ketentuan invarian untuk istilah yang digunakan dalam refleksi generik, lihat IsGenericType keterangan properti.

Berlaku untuk

Lihat juga