CA1034: Jenis berlapis tidak boleh terlihat

Properti Nilai
ID Aturan CA1034
Judul Jenis berlapis tidak boleh terlihat
Kategori Desain
Perbaikan bersifat merusak atau tidak merusak Merusak
Diaktifkan secara default di .NET 10 Tidak
Bahasa yang berlaku C# dan Visual Basic

Penyebab

Jenis yang terlihat secara eksternal berisi deklarasi jenis yang terlihat secara eksternal. Enumerasi berlapis, jenis yang dilindungi, dan pola penyusun dikecualikan dari aturan ini.

Deskripsi aturan

Jenis berlapis adalah jenis yang dideklarasikan dalam cakupan jenis lain. Tipe bersarang berguna untuk merangkum detail implementasi privat dari tipe induk. Untuk tujuan ini, tipe bersarang tidak boleh terlihat secara eksternal.

Jangan gunakan jenis berlapis yang terlihat secara eksternal untuk pengelompokan logis atau untuk menghindari tabrakan nama; sebagai gantinya, gunakan namespace.

Tipe bersarang mencakup gagasan aksesibilitas anggota, yang tidak dipahami dengan jelas oleh beberapa programmer.

Jenis yang dilindungi dapat digunakan dalam subkelas dan jenis berlapis dalam skenario penyesuaian terlebih dahulu.

Cara memperbaiki pelanggaran

Jika Anda tidak ingin tipe bersarang terlihat secara eksternal, ubah aksesibilitas tipe tersebut. Jika tidak, hapus tipe tertanam dari induknya. Jika tujuan bersarang adalah untuk mengategorikan jenis berlapis, gunakan namespace untuk membuat hierarki sebagai gantinya.

Kapan harus menekan peringatan

Jangan menyembunyikan peringatan dari aturan ini.

Contoh

Contoh berikut menunjukkan jenis yang melanggar aturan.

public class ParentType
{
    public class NestedType
    {
        public NestedType()
        {
        }
    }

    public ParentType()
    {
        NestedType nt = new NestedType();
    }
}
Imports System

Namespace ca1034

    Class ParentType

        Public Class NestedType
            Sub New()
            End Sub
        End Class

        Sub New()
        End Sub

    End Class

End Namespace