Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
| Property | valor |
|---|---|
| ID da regra | CA1401 |
| Título | P/Invocas não devem estar visíveis |
| Categoria | Interoperabilidade |
| A correção está quebrando ou não quebrando | Quebrando |
| Habilitado por padrão no .NET 10 | Como sugestão |
Motivo
Um método público ou protegido em um tipo público tem o System.Runtime.InteropServices.DllImportAttribute atributo (também implementado pela Declare palavra-chave no Visual Basic).
Descrição da regra
Métodos que são marcados com o DllImportAttribute atributo (ou métodos que são definidos usando a Declare palavra-chave no Visual Basic) usam Platform Invocation Services para acessar código não gerenciado. Tais métodos não devem ser expostos. Ao manter esses métodos privados ou internos, você garante que sua biblioteca não possa ser usada para violar a segurança, permitindo que os chamadores acessem APIs não gerenciadas que eles não poderiam chamar de outra forma.
Como corrigir violações
Para corrigir uma violação desta regra, altere o nível de acesso do método.
Quando suprimir avisos
Não suprima um aviso desta regra.
Exemplo
O exemplo a seguir declara um método que viola essa regra.
// 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