Type.GetGenericArguments Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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.