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 von den angegebenen Filter- und 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);
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 , das Klassen enthält, die vom Filter akzeptiert wurden.
Ausnahmen
Mindestens eine Klasse in einem Modul konnte nicht geladen werden.
Beispiele
Im folgenden Beispiel wird die FindTypes Methode veranschaulicht.
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 Klassenladebedingung. Die ReflectionTypeLoadException.Types Eigenschaft enthält das Array von Klassen, die im Modul definiert wurden und geladen wurden. Dieses Array kann einige Nullwerte enthalten. Die ReflectionTypeLoadException.LoaderExceptions Eigenschaft ist ein Array von Ausnahmen, die die Vom Klassenladeprogramm ausgelösten Ausnahmen darstellen. Die Löcher im Klassenarray richten sich nach oben mit den Ausnahmen.
Der von filter ihm angegebene Delegat wird für jede Klasse im Modul aufgerufen, wobei das Objekt übergeben wird, das Type die Klasse sowie die angegebene filterCriteriadarstellt. Wenn filter eine bestimmte Klasse zurückgegeben wird, wird diese Klasse in das zurückgegebene Array eingeschlossen. Bei filter Rückgaben nullwerden alle Klassen zurückgegeben und filterCriteria ignoriert.
FindTypes kann nicht verwendet werden, um parametrisierte Typen wie Arrays nachzuschlagen.