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 | Projekt |
Poprawka powodująca niezgodność lub niezgodność | Kluczowa |
Domyślnie włączone na platformie .NET 9 | Nie. |
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 zakresie 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 ułatwień dostępu składowych, które niektórzy programiści nie rozumieją wyraźnie.
Typy chronione mogą być używane w podklasach i typach zagnieżdżonych w scenariuszach dostosowywania z wyprzedzeniem.
Jak naprawić naruszenia
Jeśli nie zamierzasz, aby typ zagnieżdżony był widoczny zewnętrznie, zmień dostępność typu. W przeciwnym razie usuń typ zagnieżdżony z 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