通过


CA1401:P/Invokes 应该是不可见的

属性
规则 ID CA1401
标题 P/Invokes 应该是不可见的
类别 互操作性
修复会引起中断还是不会引起中断 突发
在 .NET 10 中默认启用 作为一种建议
适用的语言 C# 和 Visual Basic

原因

公共类型中的公共或受保护方法具有 System.Runtime.InteropServices.DllImportAttribute 特性(在 Visual Basic 中也由 Declare 关键字实现)。

规则说明

标记有 DllImportAttribute 特性的方法(或在 Visual Basic 中使用 Declare 关键字定义的方法)使用平台调用服务来访问非托管代码。 这些方法不能公开。 通过将这些方法设置为私有或内部,可以阻止调用者访问他们无法直接调用的非托管 API,以确保你的库安全无虞。

如何解决违规

若要解决此规则的冲突,请更改该方法的访问级别。

何时禁止显示警告

不要抑制此规则发出的警告。

示例

下面的示例声明了违反此规则的方法。

// Violates rule: PInvokesShouldNotBeVisible.
public class NativeMethods
{
    [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
    public static extern bool RemoveDirectory(string name);
}
Imports System

Namespace ca1401

    ' Violates rule: PInvokesShouldNotBeVisible.
    Public Class NativeMethods
        Public Declare Function RemoveDirectory Lib "kernel32" (
        ByVal Name As String) As Boolean
    End Class

End Namespace