2009-06-18 47 views
7

我正在调查一些框架代码(System.AppDomain.GetDynamicDir法),这是所有的汇编显示:MethodImplAttribute在.NET中如何工作?

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

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

回答

10

MSDN

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

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

+0

我发现这里的方法:http://www.koders.com/cpp/fid006DC4C11F458707221DA6ED2ED9CC3C7AE12E11.aspx 谢谢! – 2009-06-18 09:48:08

6

回答here

(...) MethodImplOptions.InternalCall用于 结合的extern告诉 运行时,该方法在系统自身内实现 内部。 这是为许多核心.NET 完成的框架方法更好 由在 非托管代码中实现服务。例如,许多的 上String方法,GC,和 数学类被标记为 InternalCall。如您所知, Guid.CompleteGuid也是 InternalCall