Freigeben über


Module.FindTypes-Methode

Gibt ein Array von Klassen zurück, die vom angegebenen Filter und den angegebenen Filterkriterien akzeptiert werden.

Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Overridable Function FindTypes ( _
    filter As TypeFilter, _
    filterCriteria As Object _
) As Type()
'Usage
Dim instance As Module
Dim filter As TypeFilter
Dim filterCriteria As Object
Dim returnValue As Type()

returnValue = instance.FindTypes(filter, filterCriteria)
public virtual Type[] FindTypes (
    TypeFilter filter,
    Object filterCriteria
)
public:
virtual array<Type^>^ FindTypes (
    TypeFilter^ filter, 
    Object^ filterCriteria
)
public Type[] FindTypes (
    TypeFilter filter, 
    Object filterCriteria
)
public function FindTypes (
    filter : TypeFilter, 
    filterCriteria : Object
) : Type[]

Parameter

  • filter
    Der Delegat, der zum Filtern der Klassen verwendet wird.
  • filterCriteria
    Ein Objekt, das zum Filtern der Klassen verwendet wird.

Rückgabewert

Ein Array vom Typ Type mit den vom Filter akzeptierten Klassen.

Ausnahmen

Ausnahmetyp Bedingung

ReflectionTypeLoadException

Eine oder mehrere Klassen in einem Modul konnten nicht geladen werden.

Hinweise

ReflectionTypeLoadException ist eine besondere Ausnahme beim Laden von Klassen. Die ReflectionTypeLoadException.Types-Eigenschaft enthält das Array der Klassen, die im Modul definiert und geladen wurden. Dieses Array kann einige NULL-Werte enthalten. Die ReflectionTypeLoadException.LoaderExceptions-Eigenschaft ist ein Array der Ausnahmen, die die vom Klassenladeprogramm ausgelösten Ausnahmen darstellen. Die Lücken im Klassenarray entsprechen den Ausnahmen.

Der von filter angegebene Delegat wird für jede Klasse im Modul aufgerufen, und dabei wird das Type-Objekt übergeben, das die Klasse sowie angegebene filterCriteria darstellt. Wenn filter eine bestimmte Klasse zurückgibt, ist diese Klasse im zurückgegebenen Array enthalten. Wenn filter den Wert NULL (Nothing in Visual Basic) zurückgibt, werden alle Klassen zurückgegeben, und filterCriteria wird ignoriert.

FindTypes kann nicht für die Suche nach parametrisierten Typen, z. B. Arrays, verwendet werden.

Beispiel

Das folgende Beispiel veranschaulicht die FindTypes-Methode.

Imports System
Imports System.Reflection

Namespace ReflectionModule_Examples
    Class MyMainClass
        Shared Sub Main()
            Dim moduleArray() As [Module]

            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.
            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 'Main
    End Class 'MyMainClass

    Class MySecondClass
    End Class 'MySecondClass

    ' This class does not fit the filter criteria My*.
    Class YourClass
    End Class 'YourClass
End Namespace 'ReflectionModule_Examples
using System;
using System.Reflection;

namespace ReflectionModule_Examples
{
    class MyMainClass
    {
        static void Main()
        {
            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];

            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
    {
    }
}
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 );
   }
}
package ReflectionModule_Examples;
 
import System.*;
import System.Reflection.*;

class MyMainClass
{

    public static void main(String[] args)
    {
        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 = (Module)moduleArray.get_Item(0);
        Type tArray[];
        tArray = myModule.FindTypes(Module.FilterTypeName, "My*");
        for (int iCtr = 0; iCtr < tArray.length; iCtr++) {
            Type t = tArray[iCtr];
            Console.WriteLine("Found a module beginning with My*: {0}.",
                t.get_Name());
        }
    } //main
} //MyMainClass

class MySecondClass
{
} //MySecondClass

// This class does not fit the filter criteria My*.
class YourClass
{
} //YourClass

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

Module-Klasse
Module-Member
System.Reflection-Namespace
FilterTypeName
FilterTypeNameIgnoreCase
ReflectionTypeLoadException