Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
| Property | Värde | 
|---|---|
| Regel-ID | CA1034 | 
| Title | Kapslade typer bör inte vara synliga | 
| Kategori | Designa | 
| Korrigeringen är icke-bakåtkompatibel | Brott | 
| Aktiverad som standard i .NET 9 | Nej | 
Orsak
En externt synlig typ innehåller en externt synlig typdeklaration. Kapslade uppräkningar, skyddade typer och builder-mönster är undantagna från den här regeln.
Regelbeskrivning
En kapslad typ är en typ som deklareras inom omfånget för en annan typ. Kapslade typer är användbara för att kapsla in information om privat implementering av den innehållande typen. Kapslade typer bör inte vara externt synliga för det här ändamålet.
Använd inte externt synliga kapslade typer för logisk gruppering eller för att undvika namnkollisioner. använd i stället namnområden.
Kapslade typer inkluderar begreppet medlemstillgänglighet, vilket vissa programmerare inte förstår tydligt.
Skyddade typer kan användas i underklasser och kapslade typer i avancerade anpassningsscenarier.
Så här åtgärdar du överträdelser
Om du inte vill att den kapslade typen ska vara externt synlig ändrar du typens hjälpmedel. Annars tar du bort den kapslade typen från dess överordnade. Om syftet med kapslingen är att kategorisera den kapslade typen använder du ett namnområde för att skapa hierarkin i stället.
När du ska ignorera varningar
Ignorera inte en varning från den här regeln.
Exempel
I följande exempel visas en typ som bryter mot regeln.
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