Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 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 и сериализацию объектов.
- Предыдущее состояние дел
- Решение .NET
- Главные компоненты платформы .NET (CLR, CTS и CLS)
- Роль языка C#
- Другие языки программирования с поддержкой .NET
- Компоновочные блоки .NET
- Одномодульные и многомодульные компоновочные блоки
- Роль CIL
- Роль метаданных типов .NET
- Роль манифеста компоновочного блока
- Общая система типов
- Общеязыковые спецификации
- Общеязыковая среда выполнения
- Различия между компоновочными блоками, пространствами имен и типами
- Использование ildasm.exe
- Инсталляция среды выполнения .NET
- Платформенная независимость .NET
- Резюме
- Компоновочные блоки .NET
- Роль товарной категории и установление цены
- Роль папки Bin
- Улучшенный протокол локальных соединений (XNET)
- Использование типов содержимого и столбцов
- Chapter 16. Commercial products based on Linux, iptables and netfilter
- NETMAP target
- Internet Service Providers who use assigned IP addresses
- Контрольные вопросы
- 5.3 Классификация типов резервного копирования
- 2.7 Преобразования типов
- Глава 14. Почему потребительский опыт играет важную роль в выстраивании клиентских взаимоотношений