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 akceptovaných daným filtrem a kritérii filtru.
public:
virtual cli::array <Type ^> ^ FindTypes(System::Reflection::TypeFilter ^ filter, System::Object ^ filterCriteria);
public virtual Type[] FindTypes (System.Reflection.TypeFilter? filter, 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()
Parametry
- filter
- TypeFilter
Delegát použitý k filtrování tříd.
- filterCriteria
- Object
Objekt slouží k filtrování tříd.
Návraty
Pole typu Type
obsahující třídy, které byly filtrem přijaty.
Výjimky
Nelze načíst jednu nebo více tříd v modulu.
Příklady
Následující příklad ukazuje metodu FindTypes
.
using namespace System;
using namespace System::Reflection;
using namespace System::Collections;
public ref class MySecondClass{};
// This class does not fit the filter criterion My*.
public ref class YourClass{};
int main()
{
array<Module^>^moduleArray;
moduleArray = Assembly::GetExecutingAssembly()->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 ];
array<Type^>^tArray;
tArray = myModule->FindTypes( Module::FilterTypeName, "My*" );
IEnumerator^ myEnum = tArray->GetEnumerator();
while ( myEnum->MoveNext() )
{
Type^ t = safe_cast<Type^>(myEnum->Current);
Console::WriteLine( "Found a module beginning with My*: {0}.", t->Name );
}
}
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 speciální výjimka zatížení 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 poli třídy jsou zarovnané s výjimkami.
Delegát zadaný parametrem filter
je volána pro každou třídu v modulu a předává Type
objekt představující třídu i danou filterCriteria
třídu . Pokud filter
vrátí konkrétní třídu, bude tato třída zahrnuta do vráceného pole. Pokud filter
vrátí null
hodnotu , 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.