Type.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.
Olyan objektumtömböt Type ad vissza, amely egy zárt általános típus típusargumentumait vagy egy általános típusdefiníció típusparamétereit jelöli.
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()
Válaszok
Egy általános típus típusargumentumait képviselő objektumtömb Type . Üres tömböt ad vissza, ha az aktuális típus nem általános típus.
Kivételek
A meghívott metódus nem támogatott az alaposztályban. A származtatott osztályoknak implementációt kell biztosítaniuk.
Példák
Az alábbi példakód egy GetGenericArguments létrehozott típus típusargumentumait és az általános típusdefiníció típusparamétereit jeleníti meg.
Ez a példakód egy nagyobb, a IsGenericTypeDefinition tulajdonsághoz megadott példa része. A mintakimenetet lásd a nagyobb példában.
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
Megjegyzések
A tömbelemek abban a sorrendben jelennek meg, amelyben az általános típus típusargumentumaiban jelennek meg.
Ha az aktuális típus egy zárt szerkezetű típus (azaz a ContainsGenericParameters tulajdonság visszaadja
false), a metódus által GetGenericArguments visszaadott tömb tartalmazza azokat a típusokat, amelyeket az általános típusdefiníció általános típusparamétereihez rendeltek.Ha az aktuális típus általános típusdefiníció, a tömb tartalmazza a típusparamétereket.
Ha az aktuális típus egy nyitott, konstruktált típus (azaz a ContainsGenericParameters tulajdonság visszaadja
true), amelyben az általános típusok vagy metódusok összes típusparaméteréhez és típusparaméteréhez nem rendelték hozzá az adott típusokat, a tömb mind típus- és típusparamétereket tartalmaz. 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 tükrözésben használt kifejezések invariáns feltételeinek listáját a IsGenericType tulajdonság megjegyzéseiben találja.