Module.FindTypes(TypeFilter, Object) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve um array de classes aceites pelo filtro e critérios de filtro dados.
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
O delegado era usado para filtrar as classes.
- filterCriteria
- Object
Um Objeto usado para filtrar as classes.
Devoluções
Um array de tipos Type contendo classes aceites pelo filtro.
Exceções
Uma ou mais classes num módulo não podiam ser carregadas.
Exemplos
O exemplo seguinte demonstra o 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
Observações
ReflectionTypeLoadException é uma exceção especial de carga de classe. A ReflectionTypeLoadException.Types propriedade contém o array de classes que foram definidas no módulo e que foram carregadas. Este array pode conter alguns valores nulos. A ReflectionTypeLoadException.LoaderExceptions propriedade é um array de exceções que representam as exceções lançadas pelo carregador de classes. As lacunas no array de classes coincidem com as exceções.
O delegado dado por filter é chamado para cada classe no módulo, passando o Type objeto que representa a classe bem como o dado filterCriteria. Se filter devolver uma determinada classe, essa classe será incluída no array devolvido. Se filter devolver null, todas as classes são devolvidas e filterCriteria é ignorado.
FindTypes não pode ser usado para procurar tipos parametrizados, como arrays.