MethodInfo.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 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
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 .