В классMemberlnf овходят два абстрактных метода:GetCustomAttributes иIs Defined. Оба метода связаны с атрибутами. Первый из них получает список специальных атрибутов, имеющих отношение к вызывающему объекту, а второй устанавливает, определен ли атрибут для вызывающего метода. В версию .NET Framework Version 4.0 внедрен методGetCustomAttributesData, возвращающий сведения
о специальных атрибутах. (Подробнее об атрибутах речь пойдет далее в этой главе.)
КлассТуредобавляет немало своих собственных методов и свойств к числу тех, что определены в классеMemberlnf о.В качестве примера ниже перечислен ряд наиболее часто используемых методов классаТуре.
Метод
Назначение
Constructorlnfо [ ] GetConstructors EventInfo[] GetEvents Fieldlnfо[] GetFields Type [ ]
GetGenericArguments
Получает список конструкторов для заданного типа
Получает список событий для заданного типа Получает список полей для заданного типа Получает список аргументов типа, связанных с закрыто сконструированным обобщенным типом, или же список параметров типа, если заданный тип определен как обобщенный. Для открыто сконструированного типа этот
Метод
Назначение
список может содержать как аргументы, так и параметры типа.
•
(Более подробно обобщения рассматриваются в главе 18.)
Memberlnfo[]
Получает список членов для заданного типа
GetMembers
Methodlnfo[]
Получает список методов для заданного типа
GetMethods
Propertylnfo[]
Получает список свойств для заданного типа
GetProperties
Далее приведен ряд наиболее часто используемых свойств, доступных только для
чтения и определенных в классеТуре.
Свойство
Назначение
Assembly Assembly
Получает сборку для заданного типа
TypeAttributes Attributes Получает атрибуты для заданного типа
Type BaseType
Получает непосредственный базовый тип для заданно
го типа
string FullName
Получает полное имя заданного типа
bool IsAbstract
Истинно, если заданный тип является абстрактным
bool isArray
Истинно, если заданный тип является массивом
bool IsClass
Истинно, если заданный тип является классом
bool IsEnum
Истинно, если заданный тип является перечислением
bool IsGenericParameter Истинно, если заданный тип является параметром
обобщенного типа. (Более подробно обобщения рас
сматриваются в главе 18.)
bool IsGenericType
Истинно, если заданный тип является обобщенным. (Бо
лее подробно обобщения рассматриваются в главе 18.)
string Namespace
Получает пространство имен для заданного типа
Применение рефлексии
С помощью методов и свойств классаТуреможно получить подробные сведения о типе данных во время выполнения программы. Это довольно эффективное средство. Ведь получив сведения о типе данных, можно сразу же вызвать его конструкторы и методы или воспользоваться его свойствами. Следовательно, рефлексия позволяет использовать код, который не был доступен во время компиляции.