Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 103

Файл №1160795 Г. Шилдт - С#4.0 Полное руководство (Г. Шилдт - С#4.0 Полное руководство) 103 страницаГ. Шилдт - С#4.0 Полное руководство (1160795) страница 1032019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 103)

Свойство Назначение АваептЬ1у АвзептЬ1у ТуреАССг1Ьигев АССг1Ьпгев Туре ВазеТуре Полу~ает сборку для заданного типа Получает атрибуты для заданного типа Получает непосредственный базовый тип для заданно- го типа Получает полное имя заданного типа Истинно, если заданный тип является абстрактным Истинно, если заданный тип является массивом Истинно, если заданный тип является классом Истинно, если заданный тип является перечислением Истинно, если заданный тип является параметром обобщенного типа. (Более подробно обобщения рас- сматриваются в главе 18.) Истинно, если заданный тип является обобщенным. (Бо- лее подробно обобщения рассматриваются в главе 18.) Получает пространство имен для заданного типа агггпо Ри11напге Ьоо1 1зАЬзггасг Ьоо1 гздггау Ьоо1 1зС1авз Ьоо1 1зЕпип Ьоо1 1збепег1сРагагпегег Ьоо1 1воепег1стуре зсг1пд напгезрасе Применение рефлексии С помощью методов и свойств класса Туре можно получить подробные сведения о типе данных во время выполнения программы.

Это довольно эффективное средство. Ведь получив сведения о типе данных, можно сразу же вызвать его конструкторы и методы или воспользоваться его свойствами. Следовательно, рефлексия позволяет использовать код, который не был доступен во время компиляции. Прикладной интерфейс Кейесбоп АР! весьма обширен и поэтому не может быть полностью рассмотрен в этой главе.

Ведь для этого потребовалась бы целая книга! Но прикладной интерфейс Кейес((оп АР! имеет ясную логическую структуру, а следовательно, уяснив одну его часть, нетрудно понять и все остальное. Принимая во внимание это обстоятельство, в последующих разделах демонстрируются четыре основных способа применения рефлексии: получение сведений о методах, вызов методов, конструирование объектов и загрузка типов данных из сборок.

544 Часть!. Язык С№ Получение сведений о методах Имея в своем распоряжении объект класса Туре, можно получить список методов, поддерживаемых отдельным типом данных, используя метод йесиеГЬо<(я () . Ниже приведена одна из форм, подходящих для этой цели. Неспоо1пго () йесиеспог(я () Этот метод возвращает массив объектов класса МегЬо<(1п1о, которые описывают методы, поддерживаемые вызывающим типом. Класс МеГЬоа1пго находится в пространстве имен оуягещ. не(1есггогь Класс метье<)1пго является производным от абстрактного класса МеГЬо<(Вазе, кО- торый в свою очередь наследует от класса Мещбе г1пТо. Это дает возможность пользоваться всеми свойствами и методами, определенными в этих трех классах.

Например, для получения имени метода служит свойство Маще. Особый интерес вызывают два члена класса мегьог(1пГо: негигптуре и оегРагащегегя [) . Возвращаемый тип метода находится в доступном только длл чтения свойстве Несигптуре, которое является объектом класса Туре. Метод йеграгащесегя () возвращает список параметров, связанных с анализируемым методом.

Ниже приведена его общая форма. Рагащесеггпто() цеГРагащесегя()г Сведения о параметрах содержатся в объекте класса Рагащесег1пго. В классе Рагаиесег1п1о определено немало свойств и методов, описывающих параметры. Особое значение имеют два свойства: наще — представляет собой строку, содержащую имв параметра, а Рагащесегтуре — описывает тип параметра, который инкапсулирован в объекте класса Туре. В качестве примера ниже приведена программа, в которой рефлексии используется для получения методов, поддерживаемых классом МуС1аяя. В этой программе выводится возвращаемый тип и имя каждого метода, а также имена и типы любых параметров, которые может иметь каждый метод. Анализ методов о помощью рефлексии.

ия1пи Зуягещг иягпо Бувсещ.ре11еосьоп; с1аяя МуС1аяя ( ьпс х; гпг у; рипгго МуС1аяя(гпс г, 1пс 3) ( к у = 3: ) риЬ11о гпс Зищ() ( гегигп хеу; ) риЬ11о Ьоо1 1яаеснееп(1пс 1) ( 11(х < г БГ 1 < у) гесигп Ггие; е1яе гесигп Га1яе; Глава 1у. динамическая идентификация типав, рефлексия и атрибуты 545 роЬ11с чо1д Яег(впс а, Тпг Ь) ( х= а; у=ь; ) рпЬ11с чо1д Вес(допЬ1е а, дооЬ1е Ь) х = (гпг) а; у = (дпг) Ь; ) рпЬ11с чо1д ЯЬои() Сопяо1е.нггсеЬ1пе(" х: (О), у: (1)", х, у); ) с1аяя Ве11ессоемо ( ясатгс чогд Маго() ( Туре Г = Суреог(Мус1аяя); О получить объект класса Туре, /! представлнпций класс МуС1аяя Сопяо1е.игдге11пе("Анализ методов, определенных "в классе " + Г..Хазе); Сопяо1е.иглтепдпе(); Сопяо1е.иггоевепе("Поддерживаемые методы: ") Меслод1пго[] з1 = г.ееснеслодя(); О Вывести методы, поддерживаемые в классе Мус1аяя.

Тогеасл(Меолодтпто е гп и1) ( Вывести возврашаемый тип и имв каждого метода. Сопяо1е.игдге(" " т з.несогпТуре.Мазе + " " + т.Нате + "(") !/ Вывести параметры. Рагазесег1пго[) р1 = е.веГРагаиесегя()2 РОГ(1ПГ 1=02 Г < РТ.ЬЕППГЬ2 1++) ( сопяо1е.хг1ге(р1[1].Рагаиегегтуре.Мазе + " " + рд[г).Хазе); 11(г+1 < р1.ЬепдСЬ) Сопяо1е.иг1се(", "); ) Сопяо1е.Хг).се1,1пе(")"); Сопяо1е.иггсевапе()2 ) Эта программа дает следующий результат. Анализ методов, определенных в классе МуС1аяя Поддерживаемые методы: гпс32 Яоз() 546 Часть!. Язык С№ Воо1еап 1яВесиееп(1пс32 з) уо1б Яес(1пг32 а, 1пс32 Ь) уо1б яег(оооь1е а, оопь1е ь) Уо1б Ялом () Ясгзпэ Тозсгзпэ() Воо1еап ВЧпа1в(ОЬ]есс оЬ]) гпс32 ЯеснаяЬСобе() Туре яестуре() Как видите, помимо методов, определенных в классе МуС1ая я, в данной программе выводятся также методы, определенные в классе оЬ3 есг, поскольку все типы данных в С№ наследуют от класса оЬ3 еск.

Кроме того, в качестве имен типов указываются имена структуры .]<]ЕТ. Обратите также внимание на то, что метод Яес ( ) выводится дважды, поскольку он перегружается. Один из его вариантов принимает аргументы типа 1пс, а другой — аргументы типа <(опЬ1е. Рассмотрим эту программу более подробно. Прежде всего следует заметить, что в классе МуС1а я я определен открытый конструктор и ряд открытых методов, в том числе и перегружаемый метод Яег () . Объект класса Туре, представляющий класс МуС1аяя, создается в методе Маьп () в следующей строке кода. Туре С = Гуреос(Мус1аяя)З // получить объект класса Туре, // представляющий класс МуС1аяв Напомним, что оператор Суреог возвращает объект класса Туре, представляющий конкретный тип данных (в данном случае — класс Мус1а я я).

С помощью переменной с и прикладного интерфейса не(]есс1оп АР1 в данной программе затем выводятся сведения о методах, поддерживаемых в классе МуС1аяя. Для этого в приведенной ниже строке кода сначала выводится список соответствующих методов. мегьоб1пго[] тз = г.песмегьобя()з Затем в цикле №огеасЬ организуется обращение к элементам массива т1. На каждом шаге этого цикла выводится возвращаемый тип, имя и параметры отдельного метода, как показано в приведенном ниже фрагменте кода.

Гогеасп(неспоб1пто т зп тз) ( Вывести возвращаемый тип и имя каждого метода. Сопво1е.нгзсе(" " + в.кеспгпТуре.нате + " " + в.нате + "(") Вывести параметры. Рагавегег1пго[] рз = в.СегРагавегегя()з Гог(гпг з=с; з < р1.Ьепчспз 1++) ( Сопяо1е.нггге(рз[з].РагавегегТуре.нате е " " + рз[з).нате); 11(зь1 < РЬ.Ьепдсп) Сопво1е.Иг]се(", "); Глава 17.

Динамическая идентификация типов, рефлексия и атрибуты 547 В этом фрагменте кода параметры, связанные с каждым методом, сначала создаются с помощью метода Песрагаюегегв () и сохраняются в массиве р1. Затем в цикле гог происходит обращение к элементам массива р1 и выводится тип и имя каждого параметра. Самое главное, что все эти сведения создаются динамически во время выполнения программы, не опираясь на предварительную осведомленность о классе МУС1азв. Вторая форма метода Оегв)еЬ)тос)в () Существует вторая форма метода бегнеСЬог)в (), позволяющая указывать различные флажки для отфильтровывания извлекаемых сведений о методах. Ниже приведена эта общая форма метода Вегиегиос)в () . Меопог)1пго() Певнебпог)в(В1пб1пэр1адв флажки) В этом варианте создаются только те методы, которые соответствуют указанным критериям.

В1пс)1пдр1аоз представляет собой перечисление. Ниже перечислен ряд наиболее часто используемых его значений. Описание Значение Вес1агег)Оп1у Извлекаются только те методы, которые определены а заданном классе. Унаследованные методы в извлекаемые сведения ие включаются Извлекаются методы экземпляра Извлекаются методы, ие являющиеся открытыми Извлекаются открытые методы Извлекаются статические методы 1пвгапсе МопрпЬ11с РпЬ11с Ябагьс // Теперь получаются сведения только о тех методах, которые объявлены в классе МуС1авв.

Мевпоб1пго[) юг = с.сегнегпобв(вгпбгпог1апв.пес1агес)бп1у В1пбьпдг1аэв.1пвгапсе В1пбгпор1аов.рпЬ11с); После этой замены программа дает следующий результат. Анализ методов, определенных в классе МуС1авв Поддерживаемые методы: гпСЗ2 Зчю() Воо1еап 1ввегнееп(1пг32 1) Два или несколько флажков можно объединить с помощью логической операции ИЛИ. Но как минимум флажок 1пвсапсе или Всасфс следует указывать вместе с флажком РиЬ11с или поп РиЬ11с.

Характеристики

Тип файла
DJVU-файл
Размер
7,66 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6374
Авторов
на СтудИзбе
309
Средний доход
с одного платного файла
Обучение Подробнее