Module.FindTypes(TypeFilter, Object) Methode

Definition

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

Type[]

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.

Gilt für:

Weitere Informationen