Freigeben über


Module.FindTypes(TypeFilter, Object) Methode

Definition

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

Type[]

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.

Gilt für:

Weitere Informationen