Вход/Регистрация
ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
вернуться

Троелсен Эндрю

Шрифт:

// Отображаются для полноты картины.

public static void ListVariousStats(Type t) {

 Console.WriteLine("***** Вcпомогательная информация *****");

 Console.WriteLine("Базовый класс: {0}", t.BaseType);

 Console.WriteLine("Это абстрактный тип? {0}", t.IsAbstract);

 Console.WriteLine("Это изолированный тип? {'0}", t.IsSealed);

 Console.WriteLine("Это обобщенный тип? {0}", t.IsGenericTypeDefinition);

 Console.WriteLine("Это тип класса? {0}", t.IsClass);

 Console.WriteLine(");

}

Реализация Main

Метод Main класса Program запрашивает у пользователя абсолютное имя типа. После получения строковых данных они передаются методу Туре.GetType, а извлеченный объект System.Type отправляется каждому из вспомогательных методов. Это повторяется до тех пор, пока пользователь не нажмет клавишу ‹Q›, чтобы завершить выполнение приложения.

// Здесь необходимо указать пространство имен отображения.

using System;

using System.Reflection;

...

static void Main(string[] args) {

 Console.WriteLine("***** Добро пожаловать в MyTypeViewer! *****");

 string typeName = ";

 bool userIsDone = false;

 do {

Console.WriteLine("\nВведите имя типа");

Console.Write("или нажмите Q для выхода из приложения: ");

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

typeName = Console.ReadLine;

// Желает ли пользователь завершить работу приложения?

if (typeName.ToUpper = "Q") {

userIsDone = true;

break;

}

// Попытка отображения типа.

try {

Type t = Type.GetType(typeName);

Console.WriteLine("");

ListVariousStats(t);

ListFields(t);

ListProps(t);

ListMethods(t);

ListInterfaces(t);

} catch {

Console.WriteLine("Извините, указанный тип не найден");

}

 } while (userIsDone);

}

К этому моменту приложение 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.

public static void ListMethods(Type t) {

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

 MethodInfo[] mi = t.GetMethods;

 foreach (MethodInfo m in mi) {

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

string retVal = m.ReturnType.FullName;

  • Читать дальше
  • 1
  • ...
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: