Type.GetGenericArguments Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.