CA1401: P/Invokes não deverá ser visível
TypeName |
PInvokesShouldNotBeVisible |
CheckId |
CA1401 |
<strong>Categoria</strong> |
Microsoft.Interoperability |
Alteração significativa |
Quebrando |
Causa
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 na Visual Basic).
Descrição da regra
Os métodos são marcados com o DllImportAttribute atributo (ou métodos que são definidos usando o Declare palavra-chave na Visual Basic) usar serviços de invocação de plataforma para acessar código não gerenciado. Esses métodos não devem ser expostos. Mantendo esses métodos private ou internal, certifique-se de que sua biblioteca não pode ser usada para violar a segurança por permitir que chamadores acessem APIs não gerenciadas, não pôde chamar caso contrário.
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 suprimir um aviso da regra.
Exemplo
O exemplo a seguir declara um método que viola essa 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);
}
}