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