Module.FindTypes(TypeFilter, Object) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan array kelas yang diterima oleh kriteria filter dan filter yang diberikan.
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()
Parameter
- filter
- TypeFilter
Delegasi yang digunakan untuk memfilter kelas.
- filterCriteria
- Object
Objek yang digunakan untuk memfilter kelas.
Mengembalikan
Array jenis Type
yang berisi kelas yang diterima oleh filter.
Pengecualian
Satu atau beberapa kelas dalam modul tidak dapat dimuat.
Contoh
Contoh berikut menunjukkan FindTypes
metode .
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
Keterangan
ReflectionTypeLoadException adalah pengecualian beban kelas khusus. Properti ReflectionTypeLoadException.Types
berisi array kelas yang ditentukan dalam modul dan dimuat. Array ini mungkin berisi beberapa nilai null. Properti ReflectionTypeLoadException.LoaderExceptions
adalah array pengecualian yang mewakili pengecualian yang dilemparkan oleh pemuat kelas. Lubang di baris array kelas dengan pengecualian.
Delegasi yang diberikan oleh filter
dipanggil untuk setiap kelas dalam modul, melewati objek yang Type
mewakili kelas serta yang diberikan filterCriteria
. Jika filter
mengembalikan kelas tertentu, kelas tersebut akan disertakan dalam array yang dikembalikan. Jika filter
mengembalikan null
, semua kelas dikembalikan dan filterCriteria
diabaikan.
FindTypes
tidak dapat digunakan untuk mencari jenis berparameter seperti array.