-------------------------------------------------------------
Token: 0x20000001
Name: CarLibrary
Public Key: 00 24 00 00 04 80 00 00 // и т.д.
Hash Algorithm: 0x00008004
Major Version: 0x00000002
Minor Version: 0x00000000
Build Number: 0x00000000
Revision Number: 0x000000000
Locale: ‹null›
Flags: [SideBySideCompatible] (00000000)
Представление ссылок на другие компоновочные блоки
Вдобавок к метке Assembly и набору меток TypeDef и TypeRef метаданные .NET используют метки "AssemblyRef #n", чтобы обозначить внешние компоновочные блоки. Например, поскольку CarLibrary.dll использует тип MessageBox, в окне метаданных вы обнаружите метку AssemblyRef для System.Windows.Forms.
AssemblyRef #2
-------------------------------------------------------------
Token: 0x23000002
Public Key or Token: b7 7a 5c 56 19 34 e0 89
Name: System.Windows.Forms
Version: 2.0.3600.0
Major Version: 0x00000002
Minor Version: 0x00000000
Build Number: 0x00000e10
Revision Number: 0x00000000
Locale: ‹null›
HashValue Blob:
Flags: [none] (00000000)
Представление строковых литералов
В заключение нашего обсуждения метаданных .NET укажем на то, что все строковые литералы базового программного кода представляются в окне метаданных ildasm.exe под знаком метки User Strings, как показано ниже[1].
User Strings
70000001: (11) L"Car 2.0.0.0"
70000019: (11) L"Jamming {0}"
70000031: (13) L"Quiet time…"
7000004d: (14) L"Ramming speed!"
7000006b: (19) L"Faster is better."
70000093: (16) L"Time to call AAA"
700000b5: (16) L"Your car is dead"
700000d7: (9) L"Be quiet "
700000eb: (2) L"!!"
Пока что не слишком беспокойтесь о точном синтаксисе каждого элемента метаданных .NET. Более важно то, что метаданные .NET дают очень подробное описание всех типов, определенных внутри базового кода, и всех данных, на которые в этом базовом коде имеются ссылки.
Теперь у вас должен возникнуть следующий вопрос:
Замечание. В окне MetaInfo утилиты ildasm.exe вы обнаружите также ряд меток CustomAttribute, которые используются для обозначения атрибутов, примененных в базовом программном коде. Роль атрибутов .NET мы обсудим в этой главе немного позже.
Отображение типов в .NET
В терминах .NET
Подобно любому другому пространству имен, System.Reflection содержит ряд связанных типов. В табл. 12.1 приводится список элементов этого пространства имен, о которых вам следует знать.
Таблица 12.1. Некоторые элементы пространства имен System.Reflection