Прочитать на английском

Поделиться через


Module.FindTypes(TypeFilter, Object) Метод

Определение

Возвращает массив классов, удовлетворяющих указанному фильтру и критериям фильтра.

public virtual Type[] FindTypes(System.Reflection.TypeFilter? filter, object? filterCriteria);
public virtual Type[] FindTypes(System.Reflection.TypeFilter filter, object filterCriteria);

Параметры

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
    {
    }
}

Комментарии

ReflectionTypeLoadException — это специальное исключение нагрузки класса. Свойство ReflectionTypeLoadException.Types содержит массив классов, которые были определены в модуле и были загружены. Этот массив может содержать некоторые значения NULL. Свойство ReflectionTypeLoadException.LoaderExceptions представляет собой массив исключений, представляющих исключения, созданные загрузчиком классов. Отверстия в массиве классов соответствуют исключениям.

Делегат, заданный параметром filter , вызывается для каждого класса в модуле, передавая объект Type , представляющий класс , а также заданный filterCriteria. Если filter возвращает определенный класс, этот класс будет включен в возвращаемый массив. Если filter возвращает nullзначение , возвращаются все классы и filterCriteria игнорируются.

FindTypes не может использоваться для поиска параметризованных типов, таких как массивы.

Применяется к

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.5, 1.6, 2.0, 2.1

См. также раздел