Module.FindTypes(TypeFilter, Object) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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.