我正在调查一些框架代码(System.AppDomain.GetDynamicDir法),这是所有的汇编显示:MethodImplAttribute在.NET中如何工作?
[MethodImpl(MethodImplOptions.InternalCall)]
private extern string GetDynamicDir();
时会发生什么调用此方法?我不是指这个特定的方法,而是具有这个属性的方法。
我正在调查一些框架代码(System.AppDomain.GetDynamicDir法),这是所有的汇编显示:MethodImplAttribute在.NET中如何工作?
[MethodImpl(MethodImplOptions.InternalCall)]
private extern string GetDynamicDir();
时会发生什么调用此方法?我不是指这个特定的方法,而是具有这个属性的方法。
从MSDN:
MethodImplOptions.InternalCall:指定一个内部 电话。内部调用是对 方法的调用,该方法在 公共语言运行时本身内实现。
所以基本上,CLR提供了它自己的实现这个方法(这可能是本地代码),这就是为什么你不能在反汇编器中看到它。
回答here:
(...)
MethodImplOptions.InternalCall
用于 结合的extern告诉 运行时,该方法在系统自身内实现 内部。 这是为许多核心.NET 完成的框架方法更好 由在 非托管代码中实现服务。例如,许多的 上String
方法,GC
,和 数学类被标记为InternalCall
。如您所知,Guid.CompleteGuid
也是InternalCall
。
我发现这里的方法:http://www.koders.com/cpp/fid006DC4C11F458707221DA6ED2ED9CC3C7AE12E11.aspx 谢谢! – 2009-06-18 09:48:08