2010-02-17 44 views
6

我正在使用Lokad共享庫,而這又取決於Mono.Cecil。Mono.Cecil中的這些屬性意味着什麼?

我有點困惑什麼下列屬性的意思(這些都是應該做的。NET的內部,因此具有相當的.NET內部):

  • 包裝尺寸(它們與類型做的,因爲它是在類型定義)。
  • Mvid(在ModuleDefinition中)。
  • ExplicitThis(與我知道的關鍵字有關,但在 MethodDefinition中)。
  • CallingConvention。
  • GetSentinel(在MethodReference中返回int的方法)。
  • RVA。
  • SemanticsAttribute。
  • IsHideBySig。

任何想法這些意思/做什麼?

回答

5

我對塞西爾不太熟悉,但大多數這些項目都與IL文件有關。下面是一些答案 - 全部來自Serge Lidin的書:Expert .Net 2.0 IL Assembler。

  • Packing Size =以字節爲單位的對齊因子。 (在類佈局元數據表中)(p122)

  • Mvid =全局唯一標識符,在模塊生成時分配給模塊(或模塊版本ID )。 (在模塊元數據表中)(p105)

  • Explicit This =方法調用簽名。第一個顯式指定的參數是實例指針。 ILAsm的關鍵是明確的。 (p159)

  • CallingConvention =簽名的第一個字節標識簽名的類型,由於歷史原因,它被稱爲簽名的調用約定。 (ex:default,vararg,field,localsig,property,unmgd,hasthis,explicitthis)p158-159

  • GetSentinel =最有可能與標記修飾符有關,這表示爲可變參數提供的可選參數的開始方法調用。 (p152)

  • RVA =相對虛擬地址:一個項目被加載到內存中後的地址,從中減去圖像文件的基地址 - 換句話說,一個項目的偏移量圖像文件加載到內存中。 (p42)

  • SemanticsAttribute - 很可能與MethodSemantics表有關,該表將事件和屬性與其關聯的方法相關聯,並提供關於關聯類型的信息。語義可以是setter,getter,other(property)或addon,removeon或fire(event)p317

  • IsHideBySig - 該方法隱藏具有匹配簽名和名稱的父類的所有方法(而不是隻有一個匹配的名字)。 p188