Module.FindTypes(TypeFilter, Object) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert een matrix van klassen die worden geaccepteerd door het opgegeven filter- en filtercriteria.
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()
Parameters
- filter
- TypeFilter
De gemachtigde die wordt gebruikt om de klassen te filteren.
- filterCriteria
- Object
Een object dat wordt gebruikt om de klassen te filteren.
Retouren
Een matrix van het type Type dat klassen bevat die door het filter zijn geaccepteerd.
Uitzonderingen
Een of meer klassen in een module kunnen niet worden geladen.
Voorbeelden
In het volgende voorbeeld ziet u de FindTypes methode.
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
Opmerkingen
ReflectionTypeLoadException is een speciale uitzondering voor het laden van klassen. De ReflectionTypeLoadException.Types eigenschap bevat de matrix van klassen die zijn gedefinieerd in de module en zijn geladen. Deze matrix kan enkele null-waarden bevatten. De ReflectionTypeLoadException.LoaderExceptions eigenschap is een matrix met uitzonderingen die de uitzonderingen vertegenwoordigen die zijn gegenereerd door het klasselaadprogramma. De gaten in de klassematrix komen overeen met de uitzonderingen.
De gemachtigde die door filter wordt gegeven, wordt aangeroepen voor elke klasse in de module, waarbij het Type object wordt doorgegeven dat de klasse en de opgegeven filterCriteriavertegenwoordigt. Als filter een bepaalde klasse wordt geretourneerd, wordt die klasse opgenomen in de geretourneerde matrix. Als filter retourneert null, worden alle klassen geretourneerd en filterCriteria genegeerd.
FindTypes kan niet worden gebruikt om geparameteriseerde typen zoals matrices op te zoeken.