【问题标题】:What do these properties mean in Mono.Cecil?这些属性在 Mono.Cecil 中意味着什么?
【发布时间】:2011-01-17 23:47:04
【问题描述】:

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

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

  • PackingSize(它们与 TypeDefinition 中的类型有关)。
  • Mvid(在 ModuleDefinition 中)。
  • ExplicitThis(与我知道的 this 关键字有关,但在 方法定义)。
  • 调用约定。
  • GetSentinel(在 MethodReference 中返回 int 的方法)。
  • RVA。
  • 语义属性。
  • IsHideBySig.

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

【问题讨论】:

    标签: .net mono mono.cecil


    【解决方案1】:

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

    • 打包大小 = 对齐因子(以字节为单位)。必须设置为 0 或 1 到 128 的 2 的幂。(在类布局元数据表中)(p122)

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

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

    • CallingConvention = 签名的第一个字节标识了签名的类型,由于历史原因,它被称为签名的调用约定。 (例如:default、vararg、field、localsig、property、unmgd、hasthis、explicitthis)p158-159

    • GetSentinel = 很可能与 sentinel 修饰符有关,它表示为可变参数方法调用提供的可选参数的开始。 (p152)

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-03
      • 2011-11-29
      • 2015-09-13
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多