2010-04-09 116 views
2

我只需要澄清一下管理的原型是什麼。什麼是託管原型?

我認爲這是使用DllImport屬性,並有像這樣的方法的方法:

[DllImport("user32.dll")] 
     private static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type); 

這是否一定意味着這是一個私人這也就是說,你必須有一個DllImport屬性,然後一個方法signiture靜態外部?

乾杯

回答

3

函數原型是聲明僅作爲編譯器的方式的功能來解決如何調用一些代碼,而不必「一些代碼」可看,所以不原型,它將飛行盲目相關的論證類型等。

所以對於P/Invoke功能,即。從像C#這樣的託管語言調用本地DLL中的函數,是的,你需要那些原型,除非你可以在.NET中找到一個已經存在的類來包裝那個函數,DLL或者在純託管代碼中實現類似的功能。

是的,你需要一個[DllImport...]屬性來指定具有該函數的DLL,它應該是靜態的和外部的,但它不一定是私有的,儘管它通常是,通常是因爲你然後包裝函數在一個託管類中,以使其他代碼更容易使用它。

相關問題