我正在调查一些框架代码(System.AppDomain.GetDynamicDir法),这是所有的汇编显示:
[MethodImpl(MethodImplOptions.InternalCall)]
private extern string GetDynamicDir();
会发生什么事时,这个方法被调用? 我不是说这个特定的方法,但一般这个属性的方法。
我正在调查一些框架代码(System.AppDomain.GetDynamicDir法),这是所有的汇编显示:
[MethodImpl(MethodImplOptions.InternalCall)]
private extern string GetDynamicDir();
会发生什么事时,这个方法被调用? 我不是说这个特定的方法,但一般这个属性的方法。
从MSDN :
MethodImplOptions.InternalCall:指定一个内部调用。 内部通话是被公共语言运行时本身内实现的方法的调用。
所以基本上,CLR提供了自己的这个方法的实现(这可能是在本机代码),这就是为什么你不能看到它的反汇编。
答案在这里 :
(...)
MethodImplOptions.InternalCall
结合使用与的extern以告诉该方法是在系统自身内内部实现的运行时间。 这是许多的被更好地在非托管代码中实现服务的核心.NET框架的方法来完成。 例如,许多对方法的String
,GC
和Math类被标记为InternalCall
。 正如您所注意到,Guid.CompleteGuid
也是InternalCall
。