CA1034: İç içe geçmiş türler görünür olmamalıdır

Özellik Değer
Kural Kimliği CA1034
Başlık İç içe türler görünür olmamalıdır
Kategori Tasarım
Düzeltme bozucu ya da bozmayan olabilir Son Dakika
.NET 10'da varsayılan olarak etkin Hayır
Geçerli diller C# ve Visual Basic

Neden

Dışarıdan görünen bir tür, dışarıdan görünür bir tür tanımı içerir. İç içe numaralamalar, korumalı türler ve oluşturucu desenler bu kuraldan muaftır.

Kural açıklaması

İç içe yerleştirilmiş tür, başka bir tür kapsamında bildirilen bir türdür. İç içe türler, içeren türün özel uygulama ayrıntılarını kapsüllemek için kullanışlıdır. Bu amaçla kullanılan iç içe geçmiş türler dışarıdan görünür olmamalıdır.

Mantıksal gruplandırma veya ad çakışmalarını önlemek için dışarıdan görünür iç içe türler kullanmayın; bunun yerine ad alanlarını kullanın.

İç içe türler, bazı programcıların net bir şekilde anlamadığı üyelerle ilgili erişim kavramını içerir.

Korumalı türler, önceden özelleştirme senaryolarında alt sınıflarda ve iç içe geçmiş türlerde kullanılabilir.

İhlalleri düzeltme

İç içe türün dışarıdan görünür olmasını düşünmüyorsanız, türün erişilebilirliğini değiştirin. Aksi takdirde, iç içe geçmiş türü üst öğesinden kaldırın. İç içe yerleştirmenin amacı iç içe türü kategorilere ayırmaksa, bunun yerine bir namespace kullanarak hiyerarşi oluşturun.

Uyarıların ne zaman bastırılması gerekiyor?

Bu kuraldan uyarıyı bastırmayın.

Örnek

Aşağıdaki örnekte kuralı ihlal eden bir tür gösterilmektedir.

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