Module.FindTypes(TypeFilter, Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt ein Array von Klassen zurück, die vom angegebenen Filter und den Filterkriterien akzeptiert werden.
public:
virtual cli::array <Type ^> ^ FindTypes(System::Reflection::TypeFilter ^ filter, System::Object ^ filterCriteria);
public virtual Type[] FindTypes (System.Reflection.TypeFilter? filter, object? filterCriteria);
public virtual Type[] FindTypes (System.Reflection.TypeFilter filter, object filterCriteria);
abstract member FindTypes : System.Reflection.TypeFilter * obj -> Type[]
override this.FindTypes : System.Reflection.TypeFilter * obj -> Type[]
Public Overridable Function FindTypes (filter As TypeFilter, filterCriteria As Object) As Type()
Parameter
- filter
- TypeFilter
Der Delegat, der zum Filtern der Klassen verwendet wird.
- filterCriteria
- Object
Ein Objekt, das zum Filtern der Klassen verwendet wird.
Gibt zurück
Ein Array vom Typ Type
mit Klassen, die vom Filter akzeptiert wurden.
Ausnahmen
Mindestens eine Klasse in einem Modul konnte nicht geladen werden.
Beispiele
Das folgende Beispiel veranschaulicht die FindTypes
Methode.
using namespace System;
using namespace System::Reflection;
using namespace System::Collections;
public ref class MySecondClass{};
// This class does not fit the filter criterion My*.
public ref class YourClass{};
int main()
{
array<Module^>^moduleArray;
moduleArray = Assembly::GetExecutingAssembly()->GetModules( false );
// In a simple project with only one module, the module at index
// 0 will be the module containing these classes.
Module^ myModule = moduleArray[ 0 ];
array<Type^>^tArray;
tArray = myModule->FindTypes( Module::FilterTypeName, "My*" );
IEnumerator^ myEnum = tArray->GetEnumerator();
while ( myEnum->MoveNext() )
{
Type^ t = safe_cast<Type^>(myEnum->Current);
Console::WriteLine( "Found a module beginning with My*: {0}.", t->Name );
}
}
using System;
using System.Reflection;
namespace ReflectionModule_Examples
{
class MyMainClass
{
static void Main()
{
Module[] moduleArray;
moduleArray = typeof(MyMainClass).Assembly.GetModules(false);
// In a simple project with only one module, the module at index
// 0 will be the module containing these classes.
Module myModule = moduleArray[0];
Type[] tArray;
tArray = myModule.FindTypes(Module.FilterTypeName, "My*");
foreach(Type t in tArray)
{
Console.WriteLine("Found a module beginning with My*: {0}.", t.Name);
}
}
}
class MySecondClass
{
}
// This class does not fit the filter criteria My*.
class YourClass
{
}
}
Imports System.Reflection
Namespace ReflectionModule_Examples
Class MyMainClass
Shared Sub Main()
Dim moduleArray() As [Module]
moduleArray = GetType(MyMainClass).Assembly.GetModules(False)
' In a simple project with only one module, the module at index
' 0 will be the module containing these classes.
Dim myModule As [Module] = moduleArray(0)
Dim tArray() As Type
tArray = myModule.FindTypes([Module].FilterTypeName, "My*")
Dim t As Type
For Each t In tArray
Console.WriteLine("Found a module beginning with My*: {0}", t.Name)
Next t
End Sub
End Class
Class MySecondClass
End Class
' This class does not fit the filter criteria My*.
Class YourClass
End Class
End Namespace 'ReflectionModule_Examples
Hinweise
ReflectionTypeLoadException ist eine spezielle Ausnahme für das Laden von Klassen. Die ReflectionTypeLoadException.Types
-Eigenschaft enthält das Array von Klassen, die im Modul definiert und geladen wurden. Dieses Array kann einige NULL-Werte enthalten. Die ReflectionTypeLoadException.LoaderExceptions
-Eigenschaft ist ein Array von Ausnahmen, die die Vom Klassenladeprogramm ausgelösten Ausnahmen darstellen. Die Löcher im Klassenarray reihen sich mit den Ausnahmen an.
Der von angegebene filter
Delegat wird für jede Klasse im Modul aufgerufen und übergibt das Type
-Objekt, das die -Klasse darstellt, sowie das angegebene filterCriteria
. Wenn filter
eine bestimmte Klasse zurückgibt, wird diese Klasse in das zurückgegebene Array eingeschlossen. Wenn filter
zurückgibt null
, werden alle Klassen zurückgegeben und filterCriteria
ignoriert.
FindTypes
kann nicht verwendet werden, um parametrisierte Typen wie Arrays nachzuschlagen.