CA1034: Geschachtelte Typen sollten nicht sichtbar sein.
Eigenschaft | Wert |
---|---|
Regel-ID | CA1034 |
Titel | Geschachtelte Typen sollten nicht sichtbar sein. |
Kategorie | Design |
Fix führt oder führt nicht zur Unterbrechung | Breaking |
Standardmäßig in .NET 9 aktiviert | No |
Ursache
Ein extern sichtbarer Typ enthält eine extern sichtbare Typdeklaration. Verschachtelte Enumerationen, geschützte Typen und Builder Patterns (Erbauer) sind von dieser Regel ausgenommen.
Regelbeschreibung
Ein geschachtelter Typ ist ein Typ, der innerhalb des Gültigkeitsbereichs eines anderen Typs deklariert ist. Geschachtelte Typen eignen sich für die Kapselung privater Implementierungsdetails der enthaltenden Typen. Bei dieser Verwendungsart sollten geschachtelte Typen nicht extern sichtbar sein.
Verwenden Sie keine extern sichtbaren geschachtelten Typen zur logischen Gruppierung oder zur Vermeidung von Namenskonflikten. Verwenden Sie stattdessen Namespaces.
Geschachtelte Typen beinhalten das Konzept des Memberzugriffs, das für einige Programmierer nicht ganz verständlich ist.
Geschützte Typen können in Unterklassen und geschachtelte Typen in fortschrittlichen Anpassungsszenarien verwendet werden.
Behandeln von Verstößen
Wenn Sie nicht wollen, dass der geschachtelte Typ extern sichtbar ist, müssen Sie den Zugriff auf den Typ ändern. Andernfalls können Sie den geschachtelten Typ aus dem übergeordneten Element entfernen. Wenn der Zweck der Schachtelung darin besteht, den geschachtelten Typ zu kategorisieren, können Sie stattdessen eine Namespace zur Erstellung der Hierarchie verwenden.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.
Beispiel
Das folgende Beispiel zeigt einen Typ, der gegen die Regel verstößt.
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