Module.FindTypes(TypeFilter, Object) Methode

Definitie

Retourneert een matrix van klassen die worden geaccepteerd door het opgegeven filter- en filtercriteria.

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()

Parameters

filter
TypeFilter

De gemachtigde die wordt gebruikt om de klassen te filteren.

filterCriteria
Object

Een object dat wordt gebruikt om de klassen te filteren.

Retouren

Type[]

Een matrix van het type Type dat klassen bevat die door het filter zijn geaccepteerd.

Uitzonderingen

Een of meer klassen in een module kunnen niet worden geladen.

Voorbeelden

In het volgende voorbeeld ziet u de FindTypes methode.

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

Opmerkingen

ReflectionTypeLoadException is een speciale uitzondering voor het laden van klassen. De ReflectionTypeLoadException.Types eigenschap bevat de matrix van klassen die zijn gedefinieerd in de module en zijn geladen. Deze matrix kan enkele null-waarden bevatten. De ReflectionTypeLoadException.LoaderExceptions eigenschap is een matrix met uitzonderingen die de uitzonderingen vertegenwoordigen die zijn gegenereerd door het klasselaadprogramma. De gaten in de klassematrix komen overeen met de uitzonderingen.

De gemachtigde die door filter wordt gegeven, wordt aangeroepen voor elke klasse in de module, waarbij het Type object wordt doorgegeven dat de klasse en de opgegeven filterCriteriavertegenwoordigt. Als filter een bepaalde klasse wordt geretourneerd, wordt die klasse opgenomen in de geretourneerde matrix. Als filter retourneert null, worden alle klassen geretourneerd en filterCriteria genegeerd.

FindTypes kan niet worden gebruikt om geparameteriseerde typen zoals matrices op te zoeken.

Van toepassing op

Zie ook