Роль метаданных типов .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 и сериализацию объектов.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Просмотр метаданных типов

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Просмотр метаданных типов Если вы захотите просмотреть метаданные типов для загруженного в настоящий момент компоновочного блока, просто нажмите ‹Ctrl+M›. На рис. 1.8 показаны метаданные для метода Calc.Add(). Рис. 1.8. Просмотр метаданных типов с помощью


Просмотр метаданных компоновочных блоков

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Просмотр метаданных компоновочных блоков Наконец, если вы захотите просмотреть содержимое манифеста компоновочного блока, то вам нужно двойным щелчком открыть пиктограмму MANIFEST (рис. 1.9). Рис. 1.9. Двойной щелчок на этой строке покажет манифест компоновочного блокаНе


Роль конструкторов

Из книги MySQL: руководство профессионала автора Паутов Алексей В

Роль конструкторов До сих пор объекты HelloClass строились с помощью конструктора, заданного по умолчанию, который, по определению, не имеет аргументов. Каждый класс C# автоматически снабжается типовым конструктором, который вы можете при необходимости переопределить. Этот


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

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Анализ метаданных типов Наконец, если вы сейчас нажмете комбинацию клавиш ‹Ctrl+M›, ildasm.exe отобразит метаданные для каждого из типов, имеющихся в компоновочном блоке CarLibrary.dll (рис. 11.8). Рис. 11.8. Метаданные для типов на CarLibrary.dllТеперь, после того как мы с вами заглянули внутрь


Анализ метаданных перечня EngineState

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Анализ метаданных перечня EngineState Каждый тип, определенный в компоновочном блоке, обозначен маркером "TypeDef #n" (где TypeDef – это сокращение от type definition, что в переводе означает определение типа). Если описываемый тип использует тип, определённый в рамках другого компоновочного


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

Из книги автора

Анализ метаданных типа Car Вот часть дампа типа Car, которая иллюстрирует следующее:• способ определения полей в терминах метаданных .NET;• представление методов в метаданных .NET;• отображение свойства типа в пару специальных членов-функций. TypeDef


Представление метаданных компоновочного блока

Из книги автора

Представление метаданных компоновочного блока Окно метаданных ildasm.exe позволяет также просмотреть метаданные самого компоновочного блока, для обозначения которых используется метка Assembly. Следующий фрагмент листинга показывает, что информация, представленная в таблице


Создание пользовательского приложения для просмотра метаданных

Из книги автора

Создание пользовательского приложения для просмотра метаданных Чтобы очертить общие контуры процесса отображения (а также привести пример использования System.Type), мы создадим консольное приложение, которое назовем MyTypeViewer. Эта программа будет отображать подробную


Роль HTTP

Из книги автора

Роль HTTP Web-приложения очень сильно отличаются от традиционных приложений для настольных систем. Первым очевидным отличием является то, что любое реальное Web-приложение предполагает использование, как минимум, двух соединенных в сеть, машин (конечно, при разработке


Роль HTML

Из книги автора

Роль HTML Сконфигурировав каталог для своего Web-приложения, вы должны создать и его содержимое. Напомним, что Web-приложение - это просто термин используемый для обозначения множества файлов, обеспечивающих функционирование узла, Значительная часть этих файлов будет


Роль папки Bin

Из книги автора

Роль папки Bin Позже вы увидите, что Web-страницы ASP.NET в конечном счете компилируются в компоновочный блок .NET. Поэтому не должно быть неожиданностью то, что Web-узлы могут ссылаться на любое число приватных или общедоступных компоновочных блоков, В ASP.NET 2.0 метод указания


Роль развернутых типов

Из книги автора

Роль развернутых типов Почему нам нужны развернутые типы? Они играют три важные роли: [x]. улучшают эффективность; [x]. обеспечивают лучшее моделирование; [x]. поддерживают базисные типы в унифицированной ОО-системе типов. Первое применение наиболее очевидно: без развернутых


Извлечение метаданных

Из книги автора

Извлечение метаданных В командной строке вы можете использовать режим -extract для вывода операторов DDL, которые определяют метаданные в базе данных.Все зарезервированные слова и объекты извлекаются в файл в виде символов в верхнем регистре, если только локальный язык не


Копирование только метаданных

Из книги автора

Копирование только метаданных Копирование только метаданных обычно требуется для создания "пустой" базы данных, когда вы готовы поставлять систему пользователям, загружать данные или восстанавливать базу с целью миграции. Следующая команда выполняет копирование