这些属性在Mono.Cecil中意味着什么?

时间:2010-02-17 17:47:04

标签: .net mono mono.cecil

我正在使用Lokad共享库,而后者依赖于Mono.Cecil。

我对以下属性的含义有点困惑(它们与.NET内部结构有关,因此具有等效的.NET内部结构):

  • PackingSize(它们与TypeDefinition中的类型有关。)
  • Mvid(在ModuleDefinition中)。
  • ExplicitThis(与我知道的关键字有关,但在 MethodDefinition)。
  • CallingConvention。
  • GetSentinel(在MethodReference中返回int的方法)。
  • RVA。
  • SemanticsAttribute。
  • IsHideBySig。

知道这些意思/做什么吗?

1 个答案:

答案 0 :(得分:6)

我对Cecil并不太熟悉,但这些项目中的大部分都与IL文件有关。以下是一些答案 - 全部取自Serge Lidin的书:Expert .Net 2.0 IL Assembler。

  • 包装尺寸=以字节为单位的对齐系数。必须设置为0或2的幂从1到128.(在类布局元数据表中)(p122)

  • Mvid =全局唯一标识符,在生成时分配给模块(或模块版本ID)。 (在模块元数据表中)(p105)

  • 显式This =方法调用签名。第一个显式指定的参数是实例指针。 ILAsm的关键工作是明确的。 (P159)

  • CallingConvention =签名的第一个字节标识签名的类型,由于历史原因,签名的类型称为签名的调用约定。 (例如:默认,vararg,字段,localsig,属性,unmgd,hasthis,explicitthis)p158-159

  • GetSentinel =最有可能与sentinel修饰符有关,它表示为vararg方法调用提供的可选参数的开头。 (P152)

  • RVA =相对虚拟地址:项目加载到内存后的地址,从中减去图像文件的基地址 - 换句话说,图像文件中项目的偏移量加载到内存中。 (P42)

  • SemanticsAttribute - 很可能与MethodSemantics表有关,它将事件和属性与其关联方法连接起来,并提供有关关联类型的信息。语义可以是setter,getter,other(property)或addon,removeon或fire(event)p317

  • IsHideBySig - 该方法隐藏具有匹配签名和名称的父类的所有方法(而不是仅具有匹配的名称)。 P188