CA1000 : Ne pas déclarer de membres statiques sur les types génériques
TypeName |
DoNotDeclareStaticMembersOnGenericTypes |
CheckId |
CA1000 |
Catégorie |
Microsoft.CSharp |
Modification avec rupture |
Oui |
Cause
Un type générique visible de l'extérieur contient un membre static (Shared en Visual Basic).
Description de la règle
Lorsqu'un membre static d'un type générique est appelé, l'argument de type doit être spécifié pour le type. Lorsqu'un membre d'instance générique qui ne prend pas en charge l'inférence est appelé, l'argument de type doit être spécifié pour le membre. La syntaxe permettant de spécifier l'argument de type dans ces deux cas est différente et peut être facilement confondue, comme l'illustrent les appels suivants :
' Shared method in a generic type.
GenericType(Of Integer).SharedMethod()
' Generic instance method that does not support inference.
someObject.GenericMethod(Of Integer)()
// Static method in a generic type.
GenericType<int>.StaticMethod();
// Generic instance method that does not support inference.
someObject.GenericMethod<int>();
En général, les deux déclarations précédentes doivent être évitées afin que l'argument de type ne soit pas spécifié lors de l'appel au membre. On obtient une syntaxe d'appel aux membres pour les génériques qui est identique à celle pour les non-génériques. Pour plus d'informations, consultez CA1004 : Les méthodes génériques doivent fournir un paramètre de type.
Comment corriger les violations
Pour corriger une violation de cette règle, supprimez le membre statique ou remplacez-le par un membre d'instance.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle. La fourniture de génériques dans une syntaxe facile à comprendre et à utiliser réduit le délai d'apprentissage nécessaire et augmente le taux d'adoption de nouvelles bibliothèques.
Règles connexes
CA1005 : Éviter les paramètres excessifs sur les types génériques
CA1010 : Les collections doivent implémenter une interface générique
CA1002 : Ne pas exposer de listes génériques
CA1006 : Ne pas imbriquer les types génériques dans les signatures de membre
CA1004 : Les méthodes génériques doivent fournir un paramètre de type
CA1003 : Utiliser les instances du gestionnaire d'événements génériques
CA1007 : Utiliser des classes génériques lorsque cela est approprié