Module.FindTypes(TypeFilter, Object) 方法

定義

回傳由給定濾波器及濾波條件接受的類別陣列。

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()

參數

filter
TypeFilter

代表過去會篩選班級。

filterCriteria
Object

一個用來篩選類別的物件。

傳回

Type[]

一個型別 Type 陣列,包含被過濾器接受的類別。

例外狀況

模組中無法載入一個或多個類別。

範例

以下範例示範此 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

備註

ReflectionTypeLoadException 是特殊類別的負載例外。 該 ReflectionTypeLoadException.Types 屬性包含模組中定義並載入的類別陣列。 此陣列可能包含一些空值。 這個 ReflectionTypeLoadException.LoaderExceptions 屬性是一個例外陣列,代表類別載入器拋出的例外。 類別陣列中的漏洞與例外值相符。

所給出 filter 的代理會被呼叫給模組中的每個類別,並傳遞 Type 代表類別的物件以及給定 filterCriteria的 。 若回 filter 傳特定類別,該類別將包含在回傳的陣列中。 若 filter 返回 null,則所有類別皆返回並 filterCriteria 被忽略。

FindTypes 無法用來查詢參數化型別,例如陣列。

適用於

另請參閱