MethodInfo.GetGenericArguments Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Egy általános metódus típusargumentumait vagy egy általános metódusdefiníció típusparamétereit képviselő objektumtömböt Type ad vissza.
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()
Válaszok
Egy általános metódus típusargumentumait vagy egy általános metódusdefiníció típusparamétereit képviselő objektumtömb Type . Üres tömböt ad vissza, ha az aktuális metódus nem általános metódus.
- Attribútumok
Kivételek
Ez a módszer nem támogatott.
Példák
Az alábbi példakód bemutatja, hogyan szerezheti be egy általános metódus típusargumentumait, és hogyan jelenítheti meg őket.
Ez a példa a metódushoz MakeGenericMethod megadott nagyobb példa része.
// 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
Megjegyzések
A visszaadott tömb elemei abban a sorrendben vannak, amelyben megjelennek az általános metódus típusparamétereinek listájában.
Ha az aktuális metódus egy zárt, konstruktált metódus (azaz a ContainsGenericParameters tulajdonság visszaadja
false), a metódus által GetGenericArguments visszaadott tömb tartalmazza azokat a típusokat, amelyeket az általános metódus definíciójának általános típusparamétereihez rendeltek.Ha az aktuális metódus általános metódusdefiníció, a tömb a típusparamétereket tartalmazza.
Ha az aktuális metódus egy nyíltan létrehozott metódus (azaz a ContainsGenericParameters tulajdonság visszaadja
true), amelyben bizonyos típusparaméterekhez adott típusok lettek hozzárendelve, és az általános típustípusok típusparaméterei más típusparaméterekhez lettek rendelve, a tömb mindkét típus- és típusparamétert tartalmazza. A tulajdonság használatával IsGenericParameter különválaszthatja őket. Ennek a forgatókönyvnek a bemutatásához tekintse meg a tulajdonság kód példáját ContainsGenericParameters .
Az általános metódusokra vonatkozó kifejezések invariáns feltételeinek listáját a IsGenericMethod tulajdonságban találja. Az általános tükrözésben használt egyéb kifejezések invariáns feltételeinek listáját a Type.IsGenericType tulajdonságban találja.