P/Invokes should not be visible
A public or protected method in a public type has the System.Runtime.InteropServices.DllImportAttribute attribute (also implemented by the Declare keyword in Visual Basic).
Methods marked with the DllImportAttribute attribute (or methods defined using the Declare keyword in Visual Basic) use Platform Invocation Services to access unmanaged code. Such methods should not be exposed. Keeping these methods private or internal ensures that your library cannot be used to breach security by allowing callers access to unmanaged APIs they could not call otherwise.
The following example declares a method that violates this rule.