如何在.NET中MethodImplAttribute工作?(How does the Method

2019-07-28 22:08发布

我正在调查一些框架代码(System.AppDomain.GetDynamicDir法),这是所有的汇编显示:

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

会发生什么事时,这个方法被调用? 我不是说这个特定的方法,但一般这个属性的方法。

Answer 1:

从MSDN :

MethodImplOptions.InternalCall:指定一个内部调用。 内部通话是被公共语言运行时本身内实现的方法的调用。

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



Answer 2:

答案在这里 :

(...) MethodImplOptions.InternalCall结合使用与的extern以告诉该方法是在系统自身内内部实现的运行时间。 这是许多的被更好地在非托管代码中实现服务的核心.NET框架的方法来完成。 例如,许多对方法的StringGC和Math类被标记为InternalCall 。 正如您所注意到, Guid.CompleteGuid也是InternalCall



文章来源: How does the MethodImplAttribute work in .NET?