Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
| Properti | Nilai |
|---|---|
| ID Aturan | CA1401 |
| Judul | P/Invoke tidak boleh terlihat |
| Kategori | Interoperabilitas |
| Perbaikan bersifat merusak atau tidak merusak | Merusak |
| Diaktifkan secara default di .NET 10 | Sebagai saran |
| Bahasa yang berlaku | C# dan Visual Basic |
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 pihak pemanggil mengakses API yang tidak dikelola yang seharusnya tidak dapat mereka panggil.
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