Type.GetGenericArguments Método

Definición

Devuelve una matriz de objetos Type que representan los argumentos de tipo de un tipo genérico o los parámetros de tipo de una definición de tipo genérico.

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

Devoluciones

Type[]

Matriz de objetos Type que representan los argumentos de tipo de un tipo genérico. Devuelve una matriz vacía si el tipo actual no es un tipo genérico.

Excepciones

El método invocado no se admite en la clase base. Las clases derivadas deben proporcionar una implementación.

Ejemplos

En el ejemplo de código siguiente se usa el método para mostrar los argumentos de tipo de un tipo construido y los parámetros de tipo GetGenericArguments de su definición de tipo genérico.

Este ejemplo de código forma parte de un ejemplo mayor proporcionado para la IsGenericTypeDefinition propiedad . Consulte el ejemplo más grande para obtener una salida de ejemplo.

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

Comentarios

Los elementos de matriz se devuelven en el orden en que aparecen en la lista de argumentos de tipo para el tipo genérico.

  • Si el tipo actual es un tipo construido cerrado (es decir, la propiedad devuelve ), la matriz devuelta por el método contiene los tipos que se han asignado a los parámetros de tipo genérico de la definición de ContainsGenericParameters false tipo GetGenericArguments genérico.

  • Si el tipo actual es una definición de tipo genérico, la matriz contiene los parámetros de tipo.

  • Si el tipo actual es un tipo construido abierto (es decir, la propiedad devuelve ) en el que no se han asignado tipos específicos a todos los parámetros de tipo y parámetros de tipo de tipos o ContainsGenericParameters true métodos genéricos incluidos, la matriz contiene tipos y parámetros de tipo. Use la IsGenericParameter propiedad para diferenciarlos. Para obtener una demostración de este escenario, vea el ejemplo de código de la ContainsGenericParameters propiedad .

Para obtener una lista de las condiciones invariables para los términos usados en la reflexión genérica, vea los comentarios de la propiedad IsGenericType.

Se aplica a

Consulte también