// -------------------------------------------------------
// Field Name: value__
// Flags : [Public] [SpecialName] [RTSpecialName]
// CallCnvntn: [FIELD]
// Field type: I4
//
// Field #2
// -------------------------------------------------------
// Field Name: EngineAlive
// Flags : [Public] [Static] [Literal] [HasDefault]
// DefltValue: (I4) 0
// CallCnvntn: [FIELD]
// Field type: ValueClass CarLibrary.EngineStateEnum
//
...
Маркер TypDefName
CarLibrary.EngineStateEnum. Маркер метаданных Extends применяется при документировании базового типа для заданного типа .NET Core (ссылаемого типа System.Enum в этом случае). Каждое поле перечисления помечается с использованием маркера Field #n. Ради краткости выше была приведена только часть метаданных.На заметку!
Хотя это выглядит как опечатка, вTypDefName отсутствует буква "е", которую можно было бы ожидать.Просмотр (частичных) метаданных для типа Car
Ниже показана часть метаданных класса Car
• как поля определяются в терминах метаданных .NET Core;
• как методы документируются посредством метаданных .NET Core;
• как автоматическое свойство представляется в метаданных .NET Core.
// TypeDef #1
// -------------------------------------------------------
// TypDefName: CarLibrary.Car
// Flags : [Public] [AutoLayout] [Class] [Abstract] [AnsiClass] [BeforeFieldInit]
// Extends : [TypeRef] System.Object
// Field #1
// -------------------------------------------------------
// Field Name:
// Flags : [Private]
// CallCnvntn: [FIELD]
// Field type: String
...
Method #1
-------------------------------------------------------
MethodName: get_PetName
Flags : [Public] [HideBySig] [ReuseSlot] [SpecialName]
RVA : 0x000020d0
ImplFlags : [IL] [Managed]
CallCnvntn: [DEFAULT]
hasThis
ReturnType: String
No arguments.
...
// Method #2
// -------------------------------------------------------
// MethodName: set_PetName
// Flags : [Public] [HideBySig] [ReuseSlot] [SpecialName]
// RVA : 0x00002058
// ImplFlags : [IL] [Managed]
// CallCnvntn: [DEFAULT]
// hasThis
// ReturnType: Void
// 1 Arguments
// Argument #1: String
// 1 Parameters
// (1) ParamToken : Name : value flags: [none]
...
// Property #1
// -------------------------------------------------------
// Prop.Name : PetName
// Flags : [none]
// CallCnvntn: [PROPERTY]
// hasThis
// ReturnType: String
// No arguments.
// DefltValue:
// Setter : set_PetName
// Getter : get_PetName
// 0 Others
...