CA1034: I tipi annidati non devono essere visibili
Proprietà | valore |
---|---|
ID regola | CA1034 |
Title | I tipi annidati non devono essere visibili |
Categoria | Progettazione |
La correzione causa un'interruzione o meno | Interruzione |
Abilitato per impostazione predefinita in .NET 9 | No |
Causa
Un tipo visibile esternamente contiene una dichiarazione di tipo visibile esternamente. Le enumerazioni annidate, i tipi protetti e i modelli di generatore sono esentati da questa regola.
Descrizione regola
Un tipo annidato è un tipo dichiarato nell'ambito di un altro tipo. I tipi annidati sono utili per incapsulare i dettagli dell'implementazione privata del tipo contenitore. I tipi annidati utilizzati per questo scopo non devono essere visibili esternamente.
Non usare tipi annidati esternamente visibili per il raggruppamento logico o per evitare conflitti di nomi; Usare invece spazi dei nomi.
I tipi annidati includono la nozione di accessibilità dei membri, che alcuni programmatori non capiscono chiaramente.
I tipi protetti possono essere usati in sottoclassi e tipi annidati in scenari di personalizzazione avanzati.
Come correggere le violazioni
Se non si intende che il tipo annidato sia visibile esternamente, modificare l'accessibilità del tipo. In caso contrario, rimuovere il tipo annidato dal relativo elemento padre. Se lo scopo dell'annidamento consiste nel classificare il tipo annidato, usare uno spazio dei nomi per creare invece la gerarchia.
Quando eliminare gli avvisi
Non escludere un avviso da questa regola.
Esempio
Nell'esempio seguente viene illustrato un tipo che viola la regola.
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