Assembly.GetTypes Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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 .