Delen via


CA1034: Geneste typen mogen niet zichtbaar zijn

Eigenschappen Weergegeven als
Regel-id CA1034
Titel Geneste typen mogen niet zichtbaar zijn
Categorie Ontwerpen
Oplossing is brekend of niet-brekend Breken
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

Een extern zichtbaar type bevat een extern zichtbare typedeclaratie. Geneste opsommingen, beveiligde typen en opbouwpatronen zijn uitgesloten van deze regel.

Beschrijving van regel

Een genest type is een type dat is gedeclareerd binnen het bereik van een ander type. Geneste typen zijn handig voor het inkapselen van de details van de privé-implementatie van het type dat het bevat. Voor dit doel mogen geneste typen niet extern zichtbaar zijn.

Gebruik geen extern zichtbare geneste typen voor logische groepering of om naamconflicten te voorkomen; Gebruik in plaats daarvan naamruimten.

Geneste typen omvatten het begrip 'lidtoegankelijkheid', wat sommige programmeurs niet duidelijk begrijpen.

Beveiligde typen kunnen worden gebruikt in subklassen en geneste typen in vooraf aangepaste scenario's.

Schendingen oplossen

Als u niet van plan bent om het geneste type extern zichtbaar te maken, wijzigt u de toegankelijkheid van het type. Verwijder anders het geneste type van het bovenliggende type. Als het doel van het nesten is om het geneste type te categoriseren, gebruikt u in plaats daarvan een naamruimte om de hiërarchie te maken.

Wanneer waarschuwingen onderdrukken

Een waarschuwing van deze regel niet onderdrukken.

Voorbeeld

In het volgende voorbeeld ziet u een type dat de regel schendt.

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