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.Returns an array of Type objects that represent the type arguments of a closed generic type or the type parameters of a generic type definition.

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.An array of Type objects that represent the type arguments of a generic type. Devuelve una matriz vacía si el tipo actual no es un tipo genérico.Returns an empty array if the current type is not a generic type.

Excepciones

El método invocado no se admite en la clase base.The invoked method is not supported in the base class. Las clases derivadas deben proporcionar una implementación.Derived classes must provide an implementation.

Ejemplos

En el ejemplo de código siguiente se usa el método GetGenericArguments para mostrar los argumentos de tipo de un tipo construido y los parámetros de tipo de su definición de tipo genérico.The following code example uses the GetGenericArguments method to display the type arguments of a constructed type and the type parameters of its generic type definition.

Este ejemplo de código forma parte de un ejemplo más extenso proporcionado para la propiedad IsGenericTypeDefinition.This code example is part of a larger example provided for the IsGenericTypeDefinition property. Vea el ejemplo más grande para obtener una salida de ejemplo.See the larger example for sample output.

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 la matriz se devuelven en el orden en que aparecen en la lista de argumentos de tipo para el tipo genérico.The array elements are returned in the order in which they appear in the list of type arguments for the generic type.

  • Si el tipo actual es un tipo construido cerrado (es decir, la propiedad ContainsGenericParameters devuelve false), la matriz devuelta por el método GetGenericArguments contiene los tipos que se han asignado a los parámetros de tipo genérico de la definición de tipo genérico.If the current type is a closed constructed type (that is, the ContainsGenericParameters property returns false), the array returned by the GetGenericArguments method contains the types that have been assigned to the generic type parameters of the generic type definition.

  • Si el tipo actual es una definición de tipo genérico, la matriz contiene los parámetros de tipo.If the current type is a generic type definition, the array contains the type parameters.

  • Si el tipo actual es un tipo construido abierto (es decir, la propiedad ContainsGenericParameters devuelve true) en la que los tipos específicos no se han asignado a todos los parámetros de tipo y los parámetros de tipo de los métodos o tipos genéricos envolventes, la matriz contiene tipos y parámetros de tipo.If the current type is an open constructed type (that is, the ContainsGenericParameters property returns true) in which specific types have not been assigned to all of the type parameters and type parameters of enclosing generic types or methods, the array contains both types and type parameters. Use la propiedad IsGenericParameter para distinguirlos.Use the IsGenericParameter property to tell them apart. Para ver una demostración de este escenario, vea el ejemplo de código de la propiedad ContainsGenericParameters.For a demonstration of this scenario, see the code example for the ContainsGenericParameters property.

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.For a list of the invariant conditions for terms used in generic reflection, see the IsGenericType property remarks.

Se aplica a

Consulte también: