Share via


CA1034: Kapslade typer bör inte vara synliga

Property Värde
Regel-ID CA1034
Rubrik Kapslade typer bör inte vara synliga
Kategori Designa
Korrigeringen är icke-bakåtkompatibel Bryta
Aktiverad som standard i .NET 8 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