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 |
Metode publik atau terlindungi dalam jenis publik memiliki System.Runtime.InteropServices.DllImportAttribute atribut (juga diimplementasikan oleh Declare
kata kunci di Visual Basic).
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.
Untuk memperbaiki pelanggaran aturan ini, ubah tingkat akses metode.
Jangan menyembunyikan peringatan dari aturan ini.
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
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: