Module.FindTypes(TypeFilter, Object) Metodo

Definizione

Restituisce una matrice di classi accettate dal filtro e dai criteri di filtro specificati.

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

Parametri

filter
TypeFilter

Delegato utilizzato per filtrare le classi.

filterCriteria
Object

Oggetto utilizzato per filtrare le classi.

Valori restituiti

Type[]

Matrice di tipo Type contenente classi accettate dal filtro.

Eccezioni

Impossibile caricare una o più classi in un modulo.

Esempio

Nell'esempio seguente viene illustrato il FindTypes metodo .

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

Commenti

ReflectionTypeLoadException è un'eccezione speciale di caricamento della classe. La ReflectionTypeLoadException.Types proprietà contiene la matrice di classi definite nel modulo e caricate. Questa matrice può contenere alcuni valori Null. La ReflectionTypeLoadException.LoaderExceptions proprietà è una matrice di eccezioni che rappresentano le eccezioni generate dal caricatore di classi. I fori nella matrice di classi si allineano con le eccezioni.

Il delegato specificato da filter viene chiamato per ogni classe nel modulo, passando lungo l'oggetto Type che rappresenta la classe e l'oggetto specificato filterCriteria. Se filter restituisce una determinata classe, tale classe verrà inclusa nella matrice restituita. Se filter restituisce null, tutte le classi vengono restituite e filterCriteria vengono ignorate.

FindTypes non può essere usato per cercare tipi con parametri, ad esempio matrici.

Si applica a

Vedi anche