Отображение параметров и возвращаемых значений методов

Отображение параметров и возвращаемых значений методов

Итак, всё работает. Теперь немного усовершенствуем наше приложение. В частности, модифицируем вспомогательную функцию ListMethods(), чтобы получать не только имя метода, но и возвращаемое значение, а также входные параметры. Для решения именно таких задач тип MethodInfo предлагает свойство ReturnType и метод GetParameters().

В следующем фрагменте программного кода обратите внимание на то, что строка, содержащая тип и имя каждого из параметров, строится с помощью вложенного цикла foreach.

public static void ListMethods(Type t) {

 Console.WriteLine(***** Методы *****");

 MethodInfo[] mi = t.GetMethods();

 foreach (MethodInfo m in mi) {

  // Получение возвращаемого значения.

  string retVal = m.ReturnType.FullName;

  string paramInfo = "(";

  // Получение параметров.

  foreach (ParameterInfo pi in m.GetParameters()) {

   paramInfo += string.Format("{0} {1}", pi.ParameterType, pi.Name);

  }

  paramInfo += ")";

  // Отображение основных характеристик метода.

  Console.WriteLine("-›{0} {1} (2}", retVal, m.Name, paramInfo);

 }

 Console.WriteLine(");

}

Если выполнить это обновленное приложение теперь, методы соответствующего типа будут описаны более подробно. Для примера на рис. 12.3 показаны метаданные методов для типа System.Globalization.GregorianCalendar.

Рис. 12.3. Подробное описание методов System.Globalization.GregorianCalendar

Весьма увлекательно, не так ли? Ясно, что пространство имен System.Reflection и класс System.Type позволяют отображать многие другие характеристики типа, а не только те, которые в настоящий момент реализованы в MyTypeViewer. Вы вправе надеяться на то, что можно будет исследовать события типа, выяснить, какие интерфейсы реализованы явно, получить список обобщенных параметров для заданных членов и проверить множество других характеристик.

Но и в нынешнем своем виде ваш обозреватель объектов уже кое-что умеет. Главным его ограничением, конечно же, является то, что у вас нет никакой возможности отображать объекты, размещенные вне данного компоновочного блока (MyTypeViewer) или всегда доступного mscorlib.dll. В связи с этим остается открытым вопрос: "Как строить приложения, которые могут загружать (и отображать) компоновочные блоки, о которых нет информации во время компиляции?"

Исходный код. Проект MyTypeViewer размещен в подкаталоге, соответствующем главе 15.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Модификаторы параметров методов

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Модификаторы параметров методов Методы (и статические, и уровня экземпляра) могут использовать параметры, передаваемые вызывающей стороной. Однако, в отличие от некоторых других языков программировании, в C# предлагается множество модификаторов параметров, которые


Массивы в качестве параметров (и возвращаемых значений)

Из книги 3ds Max 2008 автора Верстак Владимир Антонович

Массивы в качестве параметров (и возвращаемых значений) После создания массива вы можете передавать его, как параметр, или получать его в виде возвращаемого значения. Например, следующий метод PrintArray() получает входной массив строк и выводит каждый элемент на консоль, а


Перегрузка методов

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

Перегрузка методов Подобно другим объектно-ориентированным языкам, язык C# позволяет типу перегружать его методы. Говоря простыми словами, когда класс имеет несколько членов с одинаковыми именами, отличающихся только числом (или типом) параметров, соответствующий член


Интерфейсы в качестве возвращаемых значений

Из книги VBA для чайников автора Каммингс Стив

Интерфейсы в качестве возвращаемых значений Интерфейсы можно использовать и в качестве возвращаемых значений методов. Например, можно создать метод, который берет любой System.Object, проверяет на совместимость с IPointy и возвращает ссылку на извлеченный интерфейс.// Этот метод


Отображение методов

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Отображение методов Мы модифицируем класс Program, чтобы определить ряд статических методов, каждый из которых будет иметь один параметр System.Type и возвращать void. Начнем с метода ListMethods(), который (как вы можете догадаться сами) печатает имена всех методов, определенных


При помощи ввода значений параметров

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

При помощи ввода значений параметров Ввод значений параметров с клавиатуры является альтернативой интерактивному методу.Иногда требуется точно указать величины, характеризующие координаты опорной точки объекта и его основные размеры. Для этих целей служит свиток


10.4.2 Установка значений параметров IP

Из книги Linux программирование в примерах автора Роббинс Арнольд

10.4.2 Установка значений параметров IP Запрос приложения на установку соединения может заодно указать параметры для датаграмм IP, которые будут переносить данные этого соединения. Если не указывается определенное значение параметра, используется величина, заданная по


Создание методов

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

Создание методов Методы представляют собой обычные процедуры типов Sub и Function, которым выпало разместиться в модуле класса. Конечно, в большинстве случаев метод должен делать нечто, напрямую связанное с самим объектом, преобразуя данные, хранимые объектом. Но, при желании,


Пример 11-14. Изменение значений позиционных параметров (аргументов)

Из книги автора

Пример 11-14. Изменение значений позиционных параметров (аргументов) #!/bin/bashvariable="one two three four five"set -- $variable# Значения позиционных параметров берутся из "$variable".first_param=$1second_param=$2shift; shift # сдвиг двух первых параметров.remaining_params="$*"echoecho "первый параметр = $first_param" # oneecho "второй


14.2.3. Отображение значений всех переменных интерпретатора shell

Из книги автора

14.2.3. Отображение значений всех переменных интерпретатора shell Чтобы просмотреть значения всех переменных интерпретатора shell, достаточно воспользоваться командой set.$ setPWD=/rootSHELL=/bin/shSHLVL=1TERM=vt100UID=7USER=davedollar=99great_picture=die hard last_file=ZLPSO.txtВывод команды set может быть довольно обширен;


14.3.2. Отображение значений переменных среды

Из книги автора

14.3.2. Отображение значений переменных среды Отображение значений переменных среды выполняется так же, как и в случае с переменными интерпретатора shell. Ниже приведено несколько примеров.$ CONSOLE=tty1; export CONSOLE $ echo $CONSOLEtty1$ MYAPPS=/usr/local/application; export MYAPPS $ echo $MYAPPS /usr/local/applicationЧтобы


19.5. Проверка значений, возвращаемых функцией

Из книги автора

19.5. Проверка значений, возвращаемых функцией Для проверки значения, возвращаемого вызванной функцией, можно воспользоваться кодом завершения последней команды, размешенной непосредственно после функции, которая вызывается из сценария. Например:check it ls_a directory $FILENAME #