Читать книгу 📗 "Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю"
Маркер
TypDefNameCarLibrary.EngineStateEnumExtendsSystem.EnumField #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: <PetName>k__BackingField// 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...Прежде всего, метаданные класса
Car(System.Object[Public][Abstract]CarОбратите внимание, что автоматическое свойство дает в результате сгенерированное компилятором закрытое поддерживающее поле (по имени
<PetName>k_BackingFieldget_PetName()set_PetName()SetterGetterИсследование блока TypeRef
Вспомните, что метаданные сборки будут описывать не только набор внутренних типов (
CarEnginestateEnumCarLibrary.dllSystem.EnumTypeRef// TypeRef #19// -------------------------------------------------------// Token: 0x01000013// ResolutionScope: 0x23000001// TypeRefName: System.EnumДокументирование определяемой сборки
В файле
CarLibrary.ilAssemblyCarLibrary.dll// Assembly