CA1034 : Les types imbriqués ne doivent pas être visibles
Propriété | Value |
---|---|
Identificateur de la règle | CA1034 |
Titre | Les types imbriqués ne doivent pas être visibles |
Catégorie | Conception |
Le correctif est cassant ou non cassant | Rupture |
Activé par défaut dans .NET 8 | Non |
Cause
Un type visible en externe contient une déclaration de type visible en externe. Les énumérations imbriquées, les types protégés et les modèles de générateur sont exemptés de cette règle.
Description de la règle
Un type imbriqué représente un type déclaré dans la portée d’un autre type. Les types imbriqués sont utiles pour encapsuler les détails de l’implémentation privée du type conteneur. Utilisés à cette fin, les types imbriqués ne doivent pas être visibles de l'extérieur.
N’utilisez pas de types imbriqués visibles en externe pour le regroupement logique ou pour éviter les collisions de noms ; à la place, utilisez des espaces de noms.
Les types imbriqués incluent la notion d’accessibilité des membres, que certains programmeurs ne comprennent pas clairement.
Les types protégés peuvent être utilisés dans les sous-classes et les types imbriqués dans des scénarios de personnalisation avancés.
Comment corriger les violations
Si vous ne souhaitez pas que le type imbriqué soit visible en externe, modifiez l’accessibilité du type. Sinon, supprimez le type imbriqué de son parent. Si l’objectif de l’imbrication est de catégoriser le type imbriqué, utilisez plutôt un espace de noms pour créer la hiérarchie.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Exemple
L’exemple suivant montre un type qui enfreint la règle.
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