Type.GetGenericArguments Methode

Definition

Gibt ein Array von Type-Objekten zurück, die die Typargumente eines geschlossenen generischen Typs oder die Typparameter einer generischen Typdefinition darstellen.

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()

Gibt zurück

Type[]

Ein Array von Type-Objekten, die die Typargumente eines generischen Typs darstellen. Gibt ein leeres Array zurück, wenn der aktuelle Typ kein generischer Typ ist.

Ausnahmen

Die aufgerufene Methode wird in der Basisklasse nicht unterstützt. Abgeleitete Klassen müssen eine Implementation angeben.

Beispiele

Im folgenden Codebeispiel wird die GetGenericArguments Methode verwendet, um die Typargumente eines konstruierten Typs und die Typparameter der generischen Typdefinition anzuzeigen.

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die IsGenericTypeDefinition Eigenschaft bereitgestellt wird. Siehe das größere Beispiel für die Beispielausgabe.

if ( t->IsGenericType )
{
   
   // If this is a generic type, display the type arguments.
   //
   array<Type^>^typeArguments = t->GetGenericArguments();
   Console::WriteLine( L"\tList type arguments ({0}):",
      typeArguments->Length );
   System::Collections::IEnumerator^ myEnum =
      typeArguments->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Type^ tParam = safe_cast<Type^>(myEnum->Current);
      
      // If this is a type parameter, display its
      // position.
      //
      if ( tParam->IsGenericParameter )
      {
         Console::WriteLine(
            L"\t\t{0}\t(unassigned - parameter position {1})",
            tParam, tParam->GenericParameterPosition );
      }
      else
      {
         Console::WriteLine( L"\t\t{0}", tParam );
      }
   }
}
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

Hinweise

Die Arrayelemente werden in der Reihenfolge zurückgegeben, in der sie in der Liste der Typargumente für den generischen Typ angezeigt werden.

  • Wenn der aktuelle Typ ein geschlossener erstellter Typ ist (das heißt, die Eigenschaft gibt falsezurück), enthält das ContainsGenericParameters von der GetGenericArguments Methode zurückgegebene Array die Typen, die den generischen Typparametern der generischen Typdefinition zugewiesen wurden.

  • Wenn der aktuelle Typ eine generische Typdefinition ist, enthält das Array die Typparameter.

  • Wenn der aktuelle Typ ein geöffneter erstellter Typ ist (das heißt, die Eigenschaft gibt true) zurück, in denen bestimmte Typen nicht allen Typparametern und Typparametern von generischen Typen oder Methoden zugewiesen wurden, enthält das ContainsGenericParameters Array sowohl Typen als auch Typparameter. Verwenden Sie die IsGenericParameter Eigenschaft, um sie voneinander zu informieren. Eine Demonstration dieses Szenarios finden Sie im Codebeispiel für die ContainsGenericParameters Eigenschaft.

Eine Liste der invarianten Bedingungen für Begriffe, für Begriffe, die für die Reflektion mit generischen Methoden verwendet werden, finden Sie in den Hinweisen zur Eigenschaft IsGenericType.

Gilt für:

Siehe auch