Comparteix a través de


Assembly.GetTypes Método

Definición

Obtiene todos los tipos definidos en este ensamblado.

public:
 virtual cli::array <Type ^> ^ GetTypes();
public virtual Type[] GetTypes ();
abstract member GetTypes : unit -> Type[]
override this.GetTypes : unit -> Type[]
Public Overridable Function GetTypes () As Type()

Devoluciones

Type[]

Matriz que contiene todos los tipos que están definidos en este ensamblado.

Implementaciones

Excepciones

El ensamblado contiene uno o más tipos que no se pueden cargar. La matriz devuelta por la propiedad Types de esta excepción contiene un objeto Type para cada tipo que se cargó y null para cada tipo que no se pudo cargar, mientras que la propiedad LoaderExceptions contiene una excepción para cada tipo que no se pudo cargar.

Ejemplos

En el ejemplo siguiente se muestran los parámetros de un método en un tipo del ensamblado especificado.

Assembly^ SampleAssembly;
SampleAssembly = Assembly::LoadFrom( "c:\\Sample.Assembly.dll" );
// Obtain a reference to a method known to exist in assembly.
MethodInfo^ Method = SampleAssembly->GetTypes()[ 0 ]->GetMethod( "Method1" );
// Obtain a reference to the parameters collection of the MethodInfo instance.
array<ParameterInfo^>^ Params = Method->GetParameters();
// Display information about method parameters.
// Param = sParam1
//   Type = System::String
//   Position = 0
//   Optional=False
for each ( ParameterInfo^ Param in Params )
{
   Console::WriteLine( "Param= {0}", Param->Name );
   Console::WriteLine( "  Type= {0}", Param->ParameterType );
   Console::WriteLine( "  Position= {0}", Param->Position );
   Console::WriteLine( "  Optional= {0}", Param->IsOptional );
}
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom("c:\\Sample.Assembly.dll");
// Obtain a reference to a method known to exist in assembly.
MethodInfo Method = SampleAssembly.GetTypes()[0].GetMethod("Method1");
// Obtain a reference to the parameters collection of the MethodInfo instance.
ParameterInfo[] Params = Method.GetParameters();
// Display information about method parameters.
// Param = sParam1
//   Type = System.String
//   Position = 0
//   Optional=False
foreach (ParameterInfo Param in Params)
{
    Console.WriteLine("Param=" + Param.Name.ToString());
    Console.WriteLine("  Type=" + Param.ParameterType.ToString());
    Console.WriteLine("  Position=" + Param.Position.ToString());
    Console.WriteLine("  Optional=" + Param.IsOptional.ToString());
}
Dim SampleAssembly As [Assembly]
SampleAssembly = [Assembly].LoadFrom("c:\Sample.Assembly.dll")
' Obtain a reference to a method known to exist in assembly.
Dim Method As MethodInfo = SampleAssembly.GetTypes()(0).GetMethod("Method1")
' Obtain a reference to the parameters collection of the MethodInfo instance.
Dim Params As ParameterInfo() = Method.GetParameters()
' Display information about method parameters.
' Param = sParam1
'   Type = System.String
'   Position = 0
'   Optional=False
For Each Param As ParameterInfo In Params
    Console.WriteLine(("Param=" + Param.Name.ToString()))
    Console.WriteLine(("  Type=" + Param.ParameterType.ToString()))
    Console.WriteLine(("  Position=" + Param.Position.ToString()))
    Console.WriteLine(("  Optional=" + Param.IsOptional.ToString()))
Next

Comentarios

La matriz devuelta incluye tipos anidados y no públicos. Para recuperar solo los tipos públicos, use el GetExportedTypes método .

Si se llama al GetTypes método en un ensamblado y un tipo de ese ensamblado depende de un tipo de un ensamblado que no se ha cargado (por ejemplo, si se deriva de un tipo en el segundo ensamblado), se produce una ReflectionTypeLoadException excepción . Por ejemplo, esto puede ocurrir si el primer ensamblado se cargó con los ReflectionOnlyLoad métodos o ReflectionOnlyLoadFrom y el segundo ensamblado no se cargó. También puede ocurrir con los ensamblados cargados mediante los Load métodos y LoadFile si no se puede encontrar el segundo ensamblado cuando se llama al GetTypes método .

Nota

Si se ha reenviado un tipo a otro ensamblado, no se incluye en la matriz devuelta. Para obtener información sobre el reenvío de tipos, vea Reenvío de tipos en Common Language Runtime.

Para recuperar una colección de TypeInfo objetos en lugar de una matriz de Type objetos, utilice la Assembly.DefinedTypes propiedad .

Se aplica a