Les types de conteneurs statiques ne doivent pas comporter de constructeur
Mise à jour : novembre 2007
TypeName |
StaticHolderTypesShouldNotHaveConstructors |
CheckId |
CA1053 |
Catégorie |
Microsoft.CSharp |
Modification avec rupture |
Oui |
Cause
Un type public ou imbriqué déclare uniquement des membres statiques et dispose d'un constructeur par défaut public ou protégé.
Description de la règle
Le constructeur est inutile car l'appel à des membres statiques ne requiert aucune instance du type. Par ailleurs, étant donné que le type ne présente aucun membre non statique, la création d'une instance ne donne accès à aucun des membres du type.
Comment corriger les violations
Pour corriger une violation de cette règle, supprimez le constructeur par défaut ou rendez-le privé.
Remarque : |
---|
Certains compilateurs créent automatiquement un constructeur public par défaut si le type ne définit aucun constructeur. Si votre type est dans ce cas, ajoutez un constructeur par défaut privé pour éliminer la violation. |
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle. La présence du constructeur laisse entendre que le type n'est pas statique.
Exemple
L'exemple suivant montre un type qui enfreint cette règle. Remarquez l'absence de constructeur par défaut dans le code source. Lorsque ce code est compilé dans un assembly, le compilateur C# insérera un constructeur par défaut, ce qui violera cette règle. Pour remédier à cette réaction, déclarez un constructeur privé.
using System;
namespace DesignLibrary
{
public class NoInstancesNeeded
{
// Violates rule: StaticHolderTypesShouldNotHaveConstructors.
// Uncomment the following line to correct the violation.
// private NoInstancesNeeded() {}
public static void Method1() {}
public static void Method2() {}
}
}