CA1401: P/Invokes não deverá ser visível
TypeName |
PInvokesShouldNotBeVisible |
CheckId |
CA1401 |
Category (Categoria) |
Microsoft.Interoperability |
Alteração Significativa |
Quebra |
Causa
Um método público ou protegido em um tipo público têm o atributo System.Runtime.InteropServices.DllImportAttribute (também implementado pela palavra-chave Declare em Visual Basic).
Descrição da Regra
Métodos marcados usando o atributo DllImportAttribute (ou métodos definidos usando a palavra-chave Declare em Visual Basic) usam serviços de invocação da plataforma para acessar código não gerenciado.Esses métodos não devem ser expostos.Mantendo esses métodos particulares ou internos, você certifica-se de que sua biblioteca não pode ser usada para romper segurança permitindo aos chamadores acesso às APIs não gerenciadas que não poderiam ser chamadas 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 Alertas
Não elimine um alerta desta regra.
Exemplo
O exemplo a seguir declara um método que viola esta regra.
Imports System
NameSpace MSInternalLibrary
' Violates rule: PInvokesShouldNotBeVisible.
Public Class NativeMethods
Public Declare Function RemoveDirectory Lib "kernel32"( _
ByVal Name As String) As Boolean
End Class
End NameSpace
using System;
using System.Runtime.InteropServices;
namespace InteroperabilityLibrary
{
// Violates rule: PInvokesShouldNotBeVisible.
public class NativeMethods
{
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern bool RemoveDirectory(string name);
}
}