CA1034: Vnořené typy by neměly být viditelné
Vlastnost | Hodnota |
---|---|
ID pravidla | CA1034 |
Název | Vnořené typy by neměly být viditelné |
Kategorie | Návrh |
Oprava způsobující chybu nebo chybu způsobující chybu | Narušující |
Povoleno ve výchozím nastavení v .NET 8 | No |
Příčina
Externě viditelný typ obsahuje deklaraci externě viditelného typu. Vnořené výčty, chráněné typy a vzory tvůrce jsou z tohoto pravidla vyloučeny.
Popis pravidla
Vnořený typ je typ deklarovaný v rámci oboru jiného typu. Vnořené typy jsou užitečné pro zapouzdření podrobností privátní implementace obsahujícího typu. Jsou-li vnořené typy používány za tímto účelem, neměly by být externě viditelné.
Nepoužívejte externě viditelné vnořené typy pro logické seskupení nebo nepoužívejte kolize názvů; místo toho použijte obory názvů.
Vnořené typy zahrnují pojem přístupnosti členů, kterému někteří programátoři nerozumí jasně.
Chráněné typy je možné použít v podtřídách a vnořených typech v pokročilých scénářích přizpůsobení.
Jak opravit porušení
Pokud nechcete, aby byl vnořený typ externě viditelný, změňte přístupnost typu. Jinak odeberte vnořený typ z nadřazeného objektu. Pokud je účelem vnoření kategorizovat vnořený typ, použijte místo toho obor názvů k vytvoření hierarchie.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.
Příklad
Následující příklad ukazuje typ, který porušuje pravidlo.
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