2010-02-17 69 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