Рефлексия — это средство, позволяющее получать сведения о типе данных. Термин
Многие классы, поддерживающие рефлексию, входят в состав прикладного интерфейса .NET Reflection API, относящегося к пространству именSystem. Reflection.Поэтому для применения рефлексии в код программы обычно вводится следующая строка.
using System.Reflection;
Класс System. Type - ядро подсистемы рефлексии
КлассSystem. Туресоставляет ядро подсистемы рефлексии, поскольку он инкапсулирует тип данных. Он содержит многие свойства и методы, которыми можно
пользоваться для получения информации о типе данных во время выполнения. Класс Туре является производным от абстрактного классаSystem. Re flection. Member Inf о.
В классеMember Inf оопределены приведенные ниже свойства, доступные только для чтения.
Свойство
Описание
Type DeclaringType
Тип класса или интерфейса, в котором объявляется отражаемый член
MemberTypes MemberType
Тип члена. Это значение обозначает, является ли член по
лем, методом, свойством, событием или конструктором
int MetadataToken
Значение, связанное к конкретными метаданными
Module Module
Объект типа Module, представляющий модуль (исполняемый файл), в котором находится отражаемый тип
string Name
Имя типа
Type ReflectedType
Тип отражаемого объекта
Следует иметь в виду, что свойствоMemberTypeвозвращает типMemberTypes —перечисление, в котором определяются значения, обозначающие различные типы членов. К их числу относятся следующие.
/
MemberTypes.Constructor MemberTypes.Method MemberTypes.Field MemberTypes.Event MemberTypes.Property
Следовательно, тип члена можно определить, проверив свойствоMemberType.Так, если свойствоMemberTypeимеет значениеMemberTypes .Method,то проверяемый член является методом.
В классMemberlnf овходят два абстрактных метода:GetCustomAttributes() иIs Defined(). Оба метода связаны с атрибутами. Первый из них получает список специальных атрибутов, имеющих отношение к вызывающему объекту, а второй устанавливает, определен ли атрибут для вызывающего метода. В версию .NET Framework Version 4.0 внедрен методGetCustomAttributesData(), возвращающий сведения
о специальных атрибутах. (Подробнее об атрибутах речь пойдет далее в этой главе.)