我正在調查一些框架代碼(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