Udostępnij za pośrednictwem


Type.GetGenericArguments Metoda

Definicja

Zwraca tablicę obiektów reprezentujących argumenty typu zamkniętego typu ogólnego lub parametry Type typu definicji typu ogólnego.

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

Zwraca

Type[]

Tablica Type obiektów reprezentujących argumenty typu typu ogólnego. Zwraca pustą tablicę, jeśli bieżący typ nie jest typem ogólnym.

Wyjątki

Wywoływana metoda nie jest obsługiwana w klasie bazowej. Klasy pochodne muszą zapewniać implementację.

Przykłady

W poniższym przykładzie kodu użyto metody , aby wyświetlić argumenty typu skonstruowanego typu i parametry typu GetGenericArguments jego definicji typu ogólnego.

Ten przykład kodu jest częścią większego przykładu dostarczonego dla IsGenericTypeDefinition właściwości . Zobacz większy przykład przykładowych danych wyjściowych.

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

Uwagi

Elementy tablicy są zwracane w kolejności, w której występują na liście argumentów typu dla typu ogólnego.

  • Jeśli bieżący typ jest zamkniętym skonstruowanym typem (to oznacza, że właściwość zwraca wartość ), tablica zwrócona przez metodę zawiera typy, które zostały przypisane do parametrów typu ogólnego definicji ContainsGenericParameters false typu GetGenericArguments ogólnego.

  • Jeśli bieżący typ jest definicją typu ogólnego, tablica zawiera parametry typu.

  • Jeśli bieżący typ jest otwartym skonstruowanym typem (to oznacza, że właściwość zwraca wartość ), w którym określone typy nie zostały przypisane do wszystkich parametrów typu i parametrów typu otaczającego typy ogólne lub metody, tablica zawiera zarówno typy, jak i parametry ContainsGenericParameters true typu. Użyj właściwości IsGenericParameter , aby je odróżnić. Aby uzyskać pokaz tego scenariusza, zobacz przykładowy kod ContainsGenericParameters dla właściwości .

Aby uzyskać listę niezmiennych warunków dla terminów używanych w ogólnym odbicia, zobacz IsGenericType uwagi dotyczące właściwości.

Dotyczy

Zobacz też