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

Gur*_*epS 6 .net mono mono.cecil

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

我有点困惑以下属性意味着什么(它们与.NET内部结构有关,因此具有等效的.NET内部结构):

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

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

Jas*_*ley 6

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

  • Packing Size =对齐因子(以字节为单位).必须设置为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