Что означают эти свойства в Mono.Cecil? - PullRequest
6 голосов
/ 17 февраля 2010

Я использую разделяемые библиотеки Lokad, что, в свою очередь, зависит от Mono.Cecil.

Я немного запутался, что означают следующие свойства (они связаны с внутренними компонентами .NET и, следовательно, имеют эквивалентные внутренние компоненты .NET):

  • PackingSize (они относятся к типам, как в TypeDefinition).
  • Mvid (в ModuleDefinition).
  • ExplicitThis (что-то делать с этим ключевым словом, которое я знаю, но в MethodDefinition).
  • CallingConvention.
  • GetSentinel (метод, который возвращает int в MethodReference).
  • RVA.
  • SemanticsAttribute.
  • IsHideBySig.

Есть идеи, что они означают / делают?

1 Ответ

6 голосов
/ 19 февраля 2010

Я не слишком знаком с Сесилом, но большинство этих предметов связано с файлом IL. Вот некоторые ответы - все взяты из книги Сержа Лидина: Expert .Net 2.0 IL Assembler.

  • Размер упаковки = Коэффициент выравнивания в байтах. Должен быть установлен в 0 или в степень от 1 до 128. (в таблице метаданных макета класса) (p122)

  • Mvid = глобально уникальный идентификатор, присваиваемый модулю при его создании (или идентификатору версии модуля). (в таблице метаданных модуля) (p105)

  • Явное Это = подпись вызова метода. Первый явно указанный параметр - указатель экземпляра. Клавиатура ILAsm является явной. (P159)

  • CallingConvention = первый байт подписи идентифицирует тип подписи, который по историческим причинам называется соглашением о вызовах подписи. (например: default, vararg, field, localsig, свойство, unmgd, hasthis, явный this) p158-159

  • GetSentinel =, скорее всего, связано с модификатором sentinel, который обозначает начало необязательных аргументов, предоставляемых для вызова метода vararg. (P152)

  • RVA = Относительный виртуальный адрес: адрес элемента после его загрузки в память с вычитанием из него базового адреса файла изображения - другими словами, смещение элемента в файле изображения загружен в память. (P42)

  • SemanticsAttribute - скорее всего, что-то связанное с таблицей MethodSemantics, которая связывает события и свойства со связанными с ними методами и предоставляет информацию о типе ассоциации. Semantic может быть установщиком, получателем, другим (свойство) или дополнением, удалением или срабатыванием (событие) p317

  • IsHideBySig - метод скрывает все методы родительских классов, которые имеют совпадающую подпись и имя (в отличие от наличия только совпадающего имени). P188

...