ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Отображение реализованных интерфейсов
Теперь построим метод ListInterfaces, который будет печатать имена интерфейсов, поддерживаемых указанным на входе типом. Единственным заслуживающим внимания моментом здесь является вызов GetInterfaces, возвращающий массив System.Types. Это логично, поскольку интерфейсы тоже являются типами.
Отображение вспомогательной информации
Наконец, мы рассмотрим еще один вспомогательный метод. который будет отображать различные статистические характеристики типа (является ли тип обобщенным, какой тип для него является базовым, изолирован ли он и т.д.).
Реализация Main
Метод Main класса Program запрашивает у пользователя абсолютное имя типа. После получения строковых данных они передаются методу Туре.GetType, а извлеченный объект System.Type отправляется каждому из вспомогательных методов. Это повторяется до тех пор, пока пользователь не нажмет клавишу ‹Q›, чтобы завершить выполнение приложения.
К этому моменту приложение MyTypeViewer.exe уже готово для тестового запуска. Запустите это приложение и введите следующие абсолютные имена (помните о том, что при используемом здесь варианте вызова Туре.GetType строки имен оказываются чувствительными к регистру символов).
• System.Int32
• System.Collections.ArrayList
• System.Threading.Thread
• System.Void
• System.IO.BinaryWriter
• System.Math
• System.Console
• MyTypeViewer.Program
На рис. 12.2 показана информация для случая, соответствующего выбору типа System.Math.
Риc. 12.2. Отображение System.Math
Отображение параметров и возвращаемых значений методов
Итак, всё работает. Теперь немного усовершенствуем наше приложение. В частности, модифицируем вспомогательную функцию ListMethods, чтобы получать не только имя метода, но и возвращаемое значение, а также входные параметры. Для решения именно таких задач тип MethodInfo предлагает свойство ReturnType и метод GetParameters.
В следующем фрагменте программного кода обратите внимание на то, что строка, содержащая тип и имя каждого из параметров, строится с помощью вложенного цикла foreach.