【问题标题】:How does the MethodImplAttribute work in .NET?MethodImplAttribute 如何在 .NET 中工作?
【发布时间】:2023-03-07 09:14:02
【问题描述】:

我正在研究一些框架代码(System.AppDomain.GetDynamicDir 方法),这就是汇编程序显示的全部内容:

[MethodImpl(MethodImplOptions.InternalCall)]
private extern string GetDynamicDir();

调用此方法时会发生什么?我说的不是这个特定的方法,而是一般的具有这个属性的方法。

【问题讨论】:

    标签: .net attributes disassembly


    【解决方案1】:

    来自MSDN

    MethodImplOptions.InternalCall:指定一个内部 称呼。内部呼叫是对 内实现的方法 公共语言运行时本身。

    所以基本上,CLR 提供了它自己的这个方法的实现(可能在本机代码中),这就是为什么你在反汇编器中看不到它的原因。

    【讨论】:

    【解决方案2】:

    回复here

    (...) MethodImplOptions.InternalCall 被使用 与 extern 一起告诉 实现该方法的运行时 在系统本身内部。 这是为许多核心 .NET 完成的 更好的框架方法 通过实施服务于 非托管代码。例如,许多 StringGC 和 数学课被标记为 InternalCall。正如你所注意到的, Guid.CompleteGuid 也是一个 InternalCall

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多