Module.FindTypes(TypeFilter, Object) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna uma matriz de classes aceitas pelos critérios de filtro e filtro especificados.
public:
virtual cli::array <Type ^> ^ FindTypes(System::Reflection::TypeFilter ^ filter, System::Object ^ filterCriteria);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types might be removed")]
public virtual Type[] FindTypes(System.Reflection.TypeFilter? filter, object? filterCriteria);
public virtual Type[] FindTypes(System.Reflection.TypeFilter filter, object filterCriteria);
public virtual Type[] FindTypes(System.Reflection.TypeFilter? filter, object? filterCriteria);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Types might be removed")>]
abstract member FindTypes : System.Reflection.TypeFilter * obj -> Type[]
override this.FindTypes : System.Reflection.TypeFilter * obj -> Type[]
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 usado para filtrar as classes.
- filterCriteria
- Object
Um objeto usado para filtrar as classes.
Retornos
Uma matriz de tipo Type que contém classes que foram aceitas pelo filtro.
- Atributos
Exceções
Não foi possível carregar uma ou mais classes em um módulo.
Exemplos
O exemplo a seguir 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
Comentários
ReflectionTypeLoadException é uma exceção de carga de classe especial. A ReflectionTypeLoadException.Types propriedade contém a matriz de classes que foram definidas no módulo e foram carregadas. Essa matriz pode conter alguns valores nulos. A ReflectionTypeLoadException.LoaderExceptions propriedade é uma matriz de exceções que representa as exceções que foram geradas pelo carregador de classe. Os buracos na matriz de classe se alinham com as exceções.
O delegado fornecido por filter é chamado para cada classe no módulo, passando o Type objeto que representa a classe, bem como o determinado filterCriteria. Se filter retornar uma classe específica, essa classe será incluída na matriz retornada. Se filter retorna null, todas as classes são retornadas e filterCriteria ignoradas.
FindTypes não pode ser usado para pesquisar tipos parametrizados, como matrizes.