2010-04-09 97 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,它应该是静态的和外部的,但它不一定是私有的,尽管它通常是,通常是因为你然后包装函数在一个托管类中,以使其他代码更容易使用它。