Udostępnij za pośrednictwem


CA1034: Zagnieżdżone typy nie powinny być widoczne

Właściwości Wartość
Identyfikator reguły CA1034
Tytuł Typy zagnieżdżone nie powinny być widoczne
Kategoria Projektowanie
Poprawka łamiąca lub nienaruszająca Przełomowe
Domyślnie włączone na platformie .NET 10 Nie.
Zastosowane języki C# i Visual Basic

Przyczyna

Typ widoczny zewnętrznie zawiera zewnętrznie widoczną deklarację typu. Zagnieżdżone wyliczenia, typy chronione i wzorce konstruktora są wykluczone z tej reguły.

Opis reguły

Typ zagnieżdżony jest typem zadeklarowanym w obrębie innego typu. Typy zagnieżdżone są przydatne do hermetyzacji prywatnych szczegółów implementacji zawierającego typ. Używane w tym celu typy zagnieżdżone nie powinny być widoczne na zewnątrz.

Nie należy używać typów zagnieżdżonych zewnętrznie do grupowania logicznego ani unikać kolizji nazw; Zamiast tego należy używać przestrzeni nazw.

Typy zagnieżdżone obejmują pojęcie dostępności członków, które niektórzy programiści nie rozumieją jasno.

Typy chronione mogą być używane w podklasach i typach zagnieżdżonych w zaawansowanych scenariuszach dostosowywania.

Jak naprawić naruszenia

Jeśli nie chcesz, żeby typ zagnieżdżony był widoczny zewnętrznie, zmień jego dostępność. W przeciwnym razie usuń typ zagnieżdżony z jego elementu nadrzędnego. Jeśli celem zagnieżdżania jest kategoryzowanie typu zagnieżdżonego, użyj przestrzeni nazw, aby utworzyć hierarchię.

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły.

Przykład

W poniższym przykładzie pokazano typ, który narusza regułę.

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