例如,这是来自 .NET Framework 源文件UnsafeNativeMethods.cs:
[DllImport(ExternDll.User32, ExactSpelling=true, CharSet=CharSet.Auto)]
public static extern bool GetWindowRect(HandleRef hWnd,
[In, Out] ref NativeMethods.RECT rect);
这是来自 PInvoke.Net:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowRect(HandleRef hwnd, out RECT lpRect);
此功能的正确/最佳签名是哪个?(其中只有一个有
[return: MarshalAs(UnmanagedType.Bool)]
、 或[In, Out] ref
等)我注意到在 .NET Framework 源文件中,许多/大多数签名都有
ExactSpelling=true, CharSet=CharSet.Auto
,但在 PInvoke 上却没有。这是必需的吗?