Module.FindTypes(TypeFilter, Object) Metode

Definisi

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

Type[]

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.

Berlaku untuk

Lihat juga