Читаем C# 4.0: полное руководство полностью

Многие классы, поддерживающие рефлексию, входят в состав прикладного интерфейса .NET Reflection API, относящегося к пространству имен System.Reflection. Поэтому для применения рефлексии в код программы обычно вводится следующая строка.

using System.Reflection;

Класс System.Type - ядро подсистемы рефлексии

Класс System.Туре составляет ядро подсистемы рефлексии, поскольку он инкапсулирует тип данных. Он содержит многие свойства и методы, которыми можно пользоваться для получения информации о типе данных во время выполнения. Класс Туре является производным от абстрактного класса System.Reflection.MemberInfо.

В классе MemberInfо определены приведенные ниже свойства, доступные только для чтения.

Свойство - Описание

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() и IsDefined(). Оба метода связаны с атрибутами. Первый из них получает список специальных атрибутов, имеющих отношение к вызывающему объекту, а второй устанавливает, определен ли атрибут для вызывающего метода. В версию .NET Framework Version 4.0 внедрен метод GetCustomAttributesData(), возвращающий сведения о специальных атрибутах. (Подробнее об атрибутах речь пойдет далее в этой главе.)

Класс Туре добавляет немало своих собственных методов и свойств к числу тех, что определены в классе Memberlnfо. В качестве примера ниже перечислен ряд наиболее часто используемых методов класса Туре.

Метод - Назначение

Constructorlnfо[] GetConstructors() - Получает список конструкторов для заданного типа

EventInfo[] GetEvents() - Получает список событий для заданного типа

Fieldlnfо[] GetFields() - Получает список полей для заданного типа

Type[] GetGenericArguments() - Получает список аргументов типа, связанных с закрыто сконструированным обобщенным типом, или же список параметров типа, если заданный тип определен как обобщенный. Для открыто сконструированного типа этот список может содержать как аргументы, так и параметры типа. (Более подробно обобщения рассматриваются в главе 18.)

MemberInfo[] GetMembers() - Получает список членов для заданного типа

MethodInfo[] GetMethods() - Получает список методов для заданного типа

PropertyInfo[] 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 - Получает пространство имен для заданного типа

<p>Применение рефлексии</p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных