Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание

Анализ метаданных типа Car

Анализ метаданных типа Car

Вот часть дампа типа Car, которая иллюстрирует следующее:

• способ определения полей в терминах метаданных .NET;

• представление методов в метаданных .NET;

• отображение свойства типа в пару специальных членов-функций.

TypeDef #3
-------------------------------------------------------------
 TypDefName: CarLibrary.Car (02000004)
 Flags: [Public] [AutoLayout] [Class] [Abstract] [AnsiClass] (00100081)
 Extends: 01000002 [TypeRef] System.Object
 Field #1
 -------------------------------------------------------------
  Field Name: petName (04000008)
  Flags: [Family] (00000004)
  CallCnvntn: [FIELD]
  Field type: String

 Method #1
 -------------------------------------------------------------
  MethodName:.ctor (06000001)
  Flags: [Public] [HideBySig] [ReuseSlot] [SpecialName] [RTSpecialName] [.ctor] (00001886)
  RVA: 0x00002050
  ImplFlags: [IL] [Managed] (00000000)
  CallCnvntn: [DEFAULT]
  hasThis
  ReturnType: Void
  No arguments.

 Property #1
 -------------------------------------------------------------
  Prop.Name: PetName (17000001)
  Flags: [none] (00000000)
  CallCnvntn: [PROPERTY]
  hasThis
  ReturnType: String
  No arguments.
  DefltValue:
  Setter: (06000004) set_PetName
  Getter: (06000003) get_PetName
  0 Others

Прежде всего, отметьте то, что метаданные класса Car указывают базовый класс типа и включают различные флаги, использовавшиеся конструктором типа при его создании (такие как [public], [abstract] и т.п.). Методы (например, конструктор класса Car) описаны с учетом их имени, параметров и возвращаемого значения. Наконец, обратите внимание на то, что свойства представляются внутренними методами get_ /set_ с использованием меток Setter/Getter метаданных .NET. Как и следует ожидать, производные типы Car (это SportsCar и MiniVan) описываются аналогично.

Оглавление книги


Генерация: 1.941. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз