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 -Methode verwendet, um die Typargumente eines konstruierten Typs und die Typparameter GetGenericArguments seiner generischen Typdefinition anzuzeigen.

Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die -Eigenschaft bereitgestellt IsGenericTypeDefinition wird. Eine Beispielausgabe finden Sie im größeren Beispiel.

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.
    '
    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 konstruierter Typ ist (d. h. die -Eigenschaft gibt zurück), enthält das von der -Methode zurückgegebene Array die Typen, die den generischen Typparametern der generischen Typdefinition zugewiesen ContainsGenericParameters false GetGenericArguments wurden.

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

  • Wenn der aktuelle Typ ein offener konstruierter Typ ist (d. h. die -Eigenschaft gibt zurück), in dem bestimmte Typen nicht allen Typparametern und Typparametern von umschließenden generischen Typen oder Methoden zugewiesen wurden, enthält das Array sowohl Typen als auch ContainsGenericParameters true Typparameter. Verwenden Sie die IsGenericParameter -Eigenschaft, um sie voneinander zu teilen. 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