Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| 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