CA2121 : Les constructeurs statiques doivent être privés

Élément Valeur
ID de la règle CA2121
Category Microsoft.Security
Modification avec rupture Rupture

Cause

Un type a un constructeur statique qui n’est pas privé.

Notes

Cette règle est déconseillée. Pour plus d’informations, consultez Règles dépréciées.

Description de la règle

Un constructeur statique, également appelé constructeur de classe, est utilisé pour initialiser un type. Le système appelle le constructeur statique avant la création de la première instance du type ou le référencement de tout membre statique. L’utilisateur n’a aucun contrôle sur le moment où le constructeur statique est appelé. Si un constructeur statique n’est pas privé, il peut être appelé par un code autre que le système. Selon les opérations effectuées dans le constructeur, cette possibilité peut provoquer un comportement inattendu.

Cette règle est appliquée par les compilateurs C# et Visual Basic.

Comment corriger les violations

Les violations sont généralement causées par l’une des actions suivantes :

  • Vous avez défini un constructeur statique pour votre type et vous ne l’avez pas défini comme étant privé.

  • Le compilateur du langage de programmation a ajouté un constructeur statique par défaut à votre type et ne l’a pas défini comme étant privé.

Pour résoudre le premier type de violation, définissez votre constructeur statique comme étant privé. Pour corriger le deuxième type, ajoutez un constructeur statique privé à votre type.

Quand supprimer les avertissements

Ne supprimez pas ces violations. Si votre conception logicielle nécessite un appel explicite à un constructeur statique, il est probable qu’elle contienne de graves défauts et doive être révisée.