CA1034: Kapslade typer bör inte vara synliga
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