Assembly.GetTypes Methode

Definition

Ruft alle in dieser Assembly definierten Typen ab.

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

Gibt zurück

Type[]

Ein Array, das alle in dieser Assembly definierten Typen enthält.

Implementiert

Ausnahmen

Die Assembly enthält einen oder mehrere Typen, die nicht geladen werden können. Das von der Types-Eigenschaft dieser Ausnahme zurückgegebene Array enthält ein Type-Objekt für jeden Typ, der geladen wurde und null für jeden Typ, der nicht geladen werden konnte, während die LoaderExceptions-Eigenschaft eine Ausnahme für jeden Typ enthält, der nicht geladen werden konnte.

Beispiele

Im folgenden Beispiel werden Parameter einer Methode für einen Typ in der angegebenen Assembly angezeigt.

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

Hinweise

Das zurückgegebene Array umfasst geschachtelte und nicht öffentliche Typen. Verwenden Sie die GetExportedTypes -Methode, um nur öffentliche Typen abzurufen.

Wenn die GetTypes -Methode für eine Assembly aufgerufen wird und ein Typ in dieser Assembly von einem Typ in einer Assembly abhängig ist, die nicht geladen wurde (z. B. wenn sie von einem Typ in der zweiten Assembly abgeleitet ist), wird ein ReflectionTypeLoadException ausgelöst. Dies kann beispielsweise der Fall sein, wenn die erste Assembly mit den ReflectionOnlyLoad Methoden oder ReflectionOnlyLoadFrom geladen wurde und die zweite Assembly nicht geladen wurde. Dies kann auch mit Assemblys geschehen, die mit den Load Methoden und LoadFile geladen werden, wenn die zweite Assembly beim Aufruf der GetTypes -Methode nicht gefunden werden kann.

Hinweis

Wenn ein Typ an eine andere Assembly weitergeleitet wurde, ist er nicht im zurückgegebenen Array enthalten. Informationen zur Typweiterleitung finden Sie unter Typweiterleitung in der Common Language Runtime.

Verwenden Sie die Assembly.DefinedTypes -Eigenschaft, um eine Auflistung von TypeInfo -Objekten anstelle eines Arrays von Type -Objekten abzurufen.

Gilt für: