Assembly.GetTypes Método

Definição

Obtém todos os tipos definidos neste assembly.

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

Retornos

Type[]

Uma matriz que contém todos os tipos que são definidos nesse assembly.

Implementações

Exceções

O assembly contém um ou mais tipos que não podem ser carregados. A matriz retornada pela propriedade Types dessa exceção contém um objeto Type para cada tipo que foi carregado e null para cada tipo que não pôde ser carregado, enquanto a propriedade LoaderExceptions contém uma exceção para cada tipo que não pôde ser carregado.

Exemplos

O exemplo a seguir exibe parâmetros de um método em um tipo no assembly 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

Comentários

A matriz retornada inclui tipos aninhados e não públicos. Para recuperar apenas tipos públicos, use o GetExportedTypes método .

Se o GetTypes método for chamado em um assembly e um tipo nesse assembly depender de um tipo em um assembly que não tenha sido carregado (por exemplo, se ele derivar de um tipo no segundo assembly), um ReflectionTypeLoadException será gerado. Por exemplo, isso pode acontecer se o primeiro assembly foi carregado com os ReflectionOnlyLoad métodos ou ReflectionOnlyLoadFrom e o segundo assembly não foi carregado. Isso também pode acontecer com assemblies carregados usando os Load métodos e LoadFile se o segundo assembly não puder ser localizado quando o GetTypes método for chamado.

Observação

Se um tipo tiver sido encaminhado para outro assembly, ele não será incluído na matriz retornada. Para obter informações sobre o encaminhamento de tipos, consulte Encaminhamento de tipos no Common Language Runtime.

Para recuperar uma coleção de TypeInfo objetos em vez de uma matriz de Type objetos, use a Assembly.DefinedTypes propriedade .

Aplica-se a