CA1852: Segel jenis internal

Properti Nilai
ID Aturan CA1852
Judul Jenis segel internal
Kategori Performa
Perbaikan bersifat merusak atau tidak merusak Tidak terputus
Versi yang diperkenalkan .NET 7
Diaktifkan secara default di .NET 10 Tidak
Bahasa yang berlaku C# dan Visual Basic

Penyebab

Jenis yang tidak dapat diakses di luar rakitannya dan tidak memiliki subjenis dalam rakitan yang berisi tidak ditandai sealed (NotInheritable di Visual Basic).

Deskripsi aturan

Ketika tipe tidak dapat diakses di luar assembly-nya dan tidak memiliki subtipe dalam assembly yang memuatnya, dapat disegel dengan aman. Jenis penyegelan dapat meningkatkan performa. Untuk informasi selengkapnya, lihat Proposal Analyzer: Menutup tipe internal/privat].

Jika Anda menerapkan System.Runtime.CompilerServices.InternalsVisibleToAttribute ke rakitan yang sedang dianalisis, aturan ini tidak menandai jenis yang tidak ditandai sebagai sealed secara default, karena bidang dapat digunakan oleh rakitan teman. Untuk tetap menganalisis assembly, lihat Mengonfigurasi kode untuk menganalisis.

Cara memperbaiki pelanggaran

Tandai jenis sebagai sealed (NotInheritable di Visual Basic).

Contoh

Cuplikan kode berikut menunjukkan pelanggaran CA1852:

internal class C
{ }
Class C
End Class

Cuplikan kode berikut memperbaiki pelanggaran:

internal sealed class C
{ }
NotInheritable Class C
End Class

Kapan harus menekan peringatan

Aman untuk menekan peringatan jika performa tidak menjadi perhatian.

Menyembunyikan peringatan

Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.

#pragma warning disable CA1852
// The code that's violating the rule is on this line.
#pragma warning restore CA1852

Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none dalam file konfigurasi.

[*.{cs,vb}]
dotnet_diagnostic.CA1852.severity = none

Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.

Mengonfigurasi kode yang akan dianalisis

Gunakan opsi berikut untuk mengonfigurasi bagian mana dari codebase Anda yang akan menjalankan aturan ini.

Anda dapat mengonfigurasi opsi ini hanya untuk aturan ini, untuk semua aturan yang berlaku untuknya, atau untuk semua aturan dalam kategori ini (Performa) yang diterapkannya. Untuk informasi selengkapnya, lihat Opsi konfigurasi aturan kualitas kode.

Abaikan atribut InternalsVisibleTo

Secara bawaan, aturan ini dinonaktifkan jika rakitan yang dianalisis menggunakan InternalsVisibleToAttribute untuk mengekspos simbol internalnya. Anda dapat mengatur opsi ignore_internalsvisibleto untuk mengubah konfigurasi. Untuk menentukan bahwa aturan harus berjalan meskipun rakitan ditandai dengan InternalsVisibleToAttribute, tambahkan pasangan kunci-nilai berikut ke file .editorconfig di proyek Anda:

dotnet_code_quality.CAXXXX.ignore_internalsvisibleto = true

Nota

Ganti bagian XXXXCAXXXX dengan ID aturan yang berlaku.

Opsi ini tersedia mulai dari .NET 8.