Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
// -------------------------------------------------------
// Token: 0x20000001
// Name : CarLibrary
// Public Key :
// Hash Algorithm : 0x00008004
// Version: 1.0.0.1
// Major Version: 0x00000001
// Minor Version: 0x00000000
// Build Number: 0x00000000
// Revision Number: 0x00000001
// Locale: <null>
// Flags : [none] (00000000)
Документирование ссылаемых сборок
В дополнение к маркеру
Assembly
TypeDef
TypeRef
AssemblyRef #n
System.Runtime
AssemblyRef
System.Runtime
// AssemblyRef #1 (23000001)
// -------------------------------------------------------
// Token: 0x23000001
// Public Key or Token: b0 3f 5f 7f 11 d5 0a 3a
// Name: System.Runtime
// Version: 5.0.0.0
// Major Version: 0x00000005
// Minor Version: 0x00000000
// Build Number: 0x00000000
// Revision Number: 0x00000000
// Locale: <null>
// HashValue Blob:
// Flags: [none] (00000000)
Документирование строковых литералов
Последний полезный аспект, относящийся к метаданным .NET Core, связан с тем, что все строковые литералы в кодовой базе документируются внутри маркера
User Strings
// User Strings
// -------------------------------------------------------
// 70000001 : (23) L"CarLibrary Version 2.0!"
// 70000031 : (13) L"Quiet time..."
// 7000004d : (11) L"Jamming {0}"
// 70000065 : (32) L"Eek! Your engine block exploded!"
// 700000a7 : (34) L"Ramming speed! Faster is better..."
На заметку! Всегда помните о том, что все строки явным образом документируются в метаданных сборки, как продемонстрировано в представленном выше листинге метаданных. Это может привести к крупным последствиям в плане безопасности, если вы применяете строковые литералы для хранения паролей, номеров кредитных карт или другой конфиденциальной информации.
У вас может возникнуть вопрос о том, каким образом задействовать такую информацию в разрабатываемых приложениях (в лучшем сценарии) или зачем вообще заботиться о метаданных (в худшем сценарии). Чтобы получить ответ, необходимо ознакомиться со службами рефлексии .NET Core. Следует отметить, что полезность рассматриваемых далее тем может стать ясной только ближе к концу главы, а потому наберитесь терпения.
На заметку! В разделе
METAINFO
CustomAttribute
Понятие рефлексии
В мире .NET Core рефлексией называется процесс обнаружения типов во время выполнения. Службы рефлексии дают возможность получать программно ту же самую информацию о метаданных, которую генерирует утилита
ildasm.exe
*.dll
*.ехе
Как и любое другое пространство имен,
System.Reflection
System.Runtime.dll
System.Reflection

Чтобы понять, каким образом задействовать пространство имен
System.Reflection
System.Туре
Класс System.Туре
В классе
System.Туре
System.Reflection
Туре.GetMethods()
MethodInfo
Type.GetFields()
FieldInfo
System.Туре
System.Туре

Получение информации о типе с помощью System.Object.GetType()
Экземпляр класса
Туре
Туре
new
Туре
System.Object
GetType()
Туре