CA1034: İç içe türler görünebilir 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
Hataya neden olan veya bozulmayan düzeltme Yeni
.NET 8'de varsayılan olarak etkin Hayır

Neden

Dışarıdan görünen bir tür, dışarıdan görünür bir tür bildirimi içerir. İç içe sabit listeleri, korumalı türler ve oluşturucu desenleri bu kuraldan muaf tutulur.

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 türün dışarıdan görünür olmaması gerekir.

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 açıkça anlamadığı üye erişilebilirliği gösterimini 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 türü üst öğesinden kaldırın. İç içe yerleştirmenin amacı iç içe türü kategorilere ayırmaksa, bunun yerine hiyerarşiyi oluşturmak için bir ad alanı kullanın.

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