Compartilhar via


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);
    }
}