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

Роль метаданных типов .NET

Роль метаданных типов .NET

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

Для иллюстрации формата метаданных типов .NET давайте рассмотрим метаданные, сгенерированные для метода Add() C#-класса Calc, представленного выше (метаданные, генерируемые для VB .NET-версии метода Add(), оказываются аналогичными).

TypeDef #2 (02000003)
-----------------------------------------------------------
 TypDefName: CalculatorExample.Calc (02000003)
 Flags: [Public] [AutoLayout] [Class] [AnsiClass] [BeforeFieldlnit] (00100001)
 Extends: 01000001 [TypeRef] System.Object
 Method #1 (06000003)
-----------------------------------------------------------
 MethodName: Add (06000003)
 Flags: [Public] [HideBySig] [ReuseSlot] (00000086)
 RVA: 0x00002090
 ImplFlags: [IL] [Managed] (00000000)
 CallCnvntn: [DEFAULT]
 hasThis
 ReturnType: I4
  2 Arguments
  Argument #1: I4
  Argument #2: I4
  2 Parameters
  (1) ParamToken: (08000001) Name: x flags: [none] (00000000)
  (2) ParamToken: (08000002) Name: у flags: [none] (00000000)

Метаданные используются средой выполнения .NET, а также различными средствами разработки. Например, возможность IntelliSense, предлагаемая в Visual Studio 2005 в режиме проектирования, основана на чтении метаданных компоновочного блока. Метаданные используются различными утилитами просмотра объектов, инструментами отладки и самим компилятором C#. Для полноты картины заметим также, что использование метаданных лежит в основе множества .NET-технологий, включая удаленный доступ, отображение типов, динамическое связывание, Web-сервисы XML и сериализацию объектов.

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


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