Assembly.GetTypes Metodo

Definizione

Ottiene tutti i tipi definiti in questo 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()

Restituisce

Type[]

Matrice che contiene tutti i tipi definiti in questo assembly.

Implementazioni

Eccezioni

L'assembly contiene uno o più tipi che non possono essere caricati. La matrice restituita dalla proprietà Types di questa eccezione contiene un oggetto Type per ogni tipo caricato e null per ogni tipo non caricato, mentre la proprietà LoaderExceptions contiene un'eccezione per ogni tipo non caricato.

Esempio

Nell'esempio seguente vengono visualizzati i parametri di un metodo in un tipo nell'assembly specificato.

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

Commenti

La matrice restituita include tipi annidati e non pubblici. Per recuperare solo i tipi pubblici, usare il GetExportedTypes metodo .

Se il GetTypes metodo viene chiamato su un assembly e un tipo in tale assembly dipende da un tipo in un assembly che non è stato caricato (ad esempio, se deriva da un tipo nel secondo assembly), viene generata un'eccezione ReflectionTypeLoadException . Ad esempio, ciò può verificarsi se il primo assembly è stato caricato con i ReflectionOnlyLoad metodi o ReflectionOnlyLoadFrom e il secondo assembly non è stato caricato. Può verificarsi anche con gli assembly caricati usando i Load metodi e LoadFile se il secondo assembly non può trovarsi quando viene chiamato il GetTypes metodo .

Nota

Se un tipo è stato inoltrato a un altro assembly, non è incluso nella matrice restituita. Per informazioni sull'inoltro dei tipi, vedere Inoltro dei tipi in Common Language Runtime.

Per recuperare una raccolta di TypeInfo oggetti anziché una matrice di Type oggetti, utilizzare la Assembly.DefinedTypes proprietà .

Si applica a