Module.FindTypes(TypeFilter, Object) Método

Definición

Devuelve una matriz de clases aceptadas por los criterios de filtro y filtro especificados.

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

Parámetros

filter
TypeFilter

Delegado que se usa para filtrar las clases.

filterCriteria
Object

Objeto usado para filtrar las clases.

Devoluciones

Type[]

Matriz de tipo Type que contiene clases aceptadas por el filtro.

Excepciones

No se pudo cargar una o varias clases de un módulo.

Ejemplos

En el ejemplo siguiente se muestra el FindTypes método .

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

Comentarios

ReflectionTypeLoadException es una excepción de carga de clase especial. La ReflectionTypeLoadException.Types propiedad contiene la matriz de clases definidas en el módulo y que se cargaron. Esta matriz puede contener algunos valores NULL. La ReflectionTypeLoadException.LoaderExceptions propiedad es una matriz de excepciones que representan las excepciones producidas por el cargador de clases. Los agujeros de la matriz de clases se alinean con las excepciones.

Se llama al delegado proporcionado por filter para cada clase del módulo, pasando el Type objeto que representa la clase, así como el especificado filterCriteria. Si filter devuelve una clase determinada, esa clase se incluirá en la matriz devuelta. Si filter devuelve null, se devuelven todas las clases y filterCriteria se omiten.

FindTypes no se puede usar para buscar tipos con parámetros, como matrices.

Se aplica a

Consulte también