Module.FindTypes(TypeFilter, Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí pole tříd přijatých daným filtrem a kritérii filtru.
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()
Parametry
- filter
- TypeFilter
Delegát použitý k filtrování tříd.
- filterCriteria
- Object
Objekt použitý k filtrování tříd.
Návraty
Pole typu Type obsahující třídy, které byly přijaty filtrem.
- Atributy
Výjimky
Jednu nebo více tříd v modulu nelze načíst.
Příklady
Následující příklad ukazuje metodu FindTypes .
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
Poznámky
ReflectionTypeLoadException je výjimka pro načtení speciální třídy. Vlastnost ReflectionTypeLoadException.Types obsahuje pole tříd, které byly definovány v modulu a byly načteny. Toto pole může obsahovat některé hodnoty null. Vlastnost ReflectionTypeLoadException.LoaderExceptions je pole výjimek, které představují výjimky, které byly vyvolány zavaděčem třídy. Díry v matici tříd jsou zarovnané s výjimkami.
Delegát udělený filter je volána pro každou třídu v modulu, předávání podél Type objektu představující třídu a také dané filterCriteria. Pokud filter vrátí určitou třídu, bude tato třída zahrnuta do vráceného pole. Pokud filter se vrátí null, vrátí se všechny třídy a filterCriteria budou ignorovány.
FindTypes nelze použít k vyhledání parametrizovaných typů, jako jsou pole.