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