Введение в программирование

       

Класс Type


Класс System.Type имеет следующее формальное описание:

public abstract class Type : MemberInfo, IReflect.

Две ссылки типа Type на объект будут ссылаться на один и тот же объект только в том случае, если они представляют одинаковый тип.

Экземпляр типа Type может быть представлен любым из следующих типов:

  • классы;
  • размерные типы (Value types);
  • массивы;
  • интерфейсы;
  • указатели;
  • нумераторы.

Ссылка на объект Type, ассоциируемый с типом, может быть получена одним из следующих способов:

  • метод Object.GetType возвращает объект Type, представляющий тип экземпляра объекта;
  • статический метод GetType возвращает объект Type, который представляет тип, указанный посредством своего полного имени;
  • методы Module.GetTypes, Module.GetType, и Module.FindTypes возвращают объект Type, который представляет типы, определенные в модуле. Метод GetTypes позволяет получить массив объектов для всех общедоступных и защищенных типов, определенных в модуле;
  • метод FindInterfaces возвращает отфильтрованный список интерфейсов типов, которые поддерживаются данным типом;
  • метод GetElementType возвращает объект Type, который представляет элемент;
  • методы GetInterfaces и GetInterface возвращают объект Type, который представляет интерфейс, поддерживаемый типом;
  • метод GetTypeArray возвращает массив объектов Type, которые представляют типы, заданные посредством набора объектов;
  • методы GetTypeFromProgIDи GetTypeFromCLSID возвращают объект Type , который указывается через ProgID или CLSID (методы предоставляются для совместимости с СОМ);
  • метод GetTypeFromHandle возвращает объект Type , который указывается посредством дескриптора (метод предоставляется для совместимости);
  • оператор typeof получает объект Type для указанного типа.

Метаданные - это информация о выполнимом модуле, получаемая во время выполнения приложения. К такой информации относятся и данные о типе. В случае неправильного указания имени типа возникает исключение. Поэтому указание типа следует заключать в блок try-catch .

Например:

try { Type tp=Type.GetType(s); Console.WriteLine("Имя типа : {0}",tp.FullName); } catch (System.NullReferenceException) {Console.WriteLine("Ошибка задания типа");}


Класс Type предоставляет большой набор свойств для запроса информации по типу, включая следующие:

  • FullName - возвращает имя типа;
  • IsClass - определяет, является ли тип классом;
  • IsAbstract - определяет, является ли тип абстрактным классом;
  • IsNestedPublic - определяет, является ли тип вложенным и общедоступным;
  • IsPublic - определяет, является ли данный тип общедоступным;
  • IsNotPublic - определяет, является ли данный тип защищенным;
  • IsSealed - определяет, является ли тип конечным (не может быть базовым классом);
  • IsArray - определяет, представляет ли указанный тип массив;
  • GUID - возвращает значение типа GUID, ассоциированное с данным типом (такое значение хранится в реестре Windows).

    Например:

    Type myType = typeof(MyClass1); Guid myGuid =(Guid) myType.GUID;

  • IsNestedAssembly - определяет, является ли тип вложенным и видимым только в своей собственной сборке;
  • Module - возвращает модуль (DLL) в котором объявлен данный тип;
  • Namespace - возвращает пространство имен, содержащее данный тип;


Свойство IsByRef позволяет определить, передается ли указанный элемент по типу, а свойство Assembly определяет сборку.

Например:

Type tp=Type.GetType(s); Console.WriteLine("\tПередается по ссылке ? : {0}",tp.IsByRef);


Содержание раздела