CA1401: P/Invoke tidak boleh terlihat
Properti | Nilai |
---|---|
ID Aturan | CA1401 |
Judul | P/Invoke tidak boleh terlihat |
Golongan | Interoperabilitas |
Perbaikan bersifat disruptif atau non-disruptif | Merusak |
Diaktifkan secara default di .NET 9 | Sebagai saran |
Penyebab
Metode publik atau terlindungi dalam jenis publik memiliki System.Runtime.InteropServices.DllImportAttribute atribut (juga diimplementasikan oleh Declare
kata kunci di Visual Basic).
Deskripsi aturan
Metode yang ditandai dengan DllImportAttribute atribut (atau metode yang ditentukan dengan menggunakan Declare
kata kunci di Visual Basic) menggunakan Platform Invocation Services untuk mengakses kode yang tidak dikelola. Metode seperti itu tidak boleh diperlihatkan. Dengan menjaga metode ini tetap privat atau internal, Anda memastikan bahwa pustaka Anda tidak dapat digunakan untuk melanggar keamanan dengan mengizinkan penelepon mengakses API yang tidak dikelola yang tidak dapat mereka panggil sebaliknya.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini, ubah tingkat akses metode.
Kapan harus menekan peringatan
Jangan menyembunyikan peringatan dari aturan ini.
Contoh
Contoh berikut mendeklarasikan metode yang melanggar aturan ini.
// 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