P/Invokes não deverá ser visível
TypeName |
PInvokesShouldNotBeVisible |
CheckId |
CA1401 |
Category (Categoria) |
Microsoft.interoperabilidade |
Quebrando alterar |
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 no Visual Basic).
Descrição da regra
Métodos marcados com o DllImportAttribute atributo (ou métodos definidos usando o Declare uso de palavra-chave no Visual Basic) plataforma Invocation Services para acessar código não gerenciado. Esses métodos não devem ser expostos.Manter esses métodos particular ou internal garante que sua biblioteca não pode ser usada para violar a segurança, permitindo que os chamadores acesso a APIs não gerenciadas não pôde chamar caso contrário.
Como corrigir violações
Para corrigir uma violação dessa 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 violam 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);
}
}