Например, это из исходного файла .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 их нет. Это требуется?