2009-06-18 45 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