Partager via


Éviter les paramètres excessifs sur les types génériques

Mise à jour : novembre 2007

TypeName

AvoidExcessiveParametersOnGenericTypes

CheckId

CA1005

Catégorie

Microsoft.CSharp

Modification avec rupture

Oui

Cause

Un type générique visible de l'extérieur contient plus de deux paramètres de type.

Description de la règle

Plus un type générique contient de paramètres de type, plus il est difficile de déterminer et de mémoriser la représentation de chaque paramètre de type. Cela est généralement évident avec un paramètre de type, comme dans List<T>, et dans certains cas avec deux paramètres de type, comme dans Dictionary<TKey, TValue>. S'il existe plus de deux paramètres de type, la difficulté devient trop grande pour la plupart des utilisateurs, par exemple, TooManyTypeParameters<T, K, V> en C# ou TooManyTypeParameters(Of T, K, V) en Visual Basic.

Comment corriger les violations

Pour corriger une violation de cette règle, modifiez le design afin d'utiliser deux paramètres de type au maximum.

Quand supprimer les avertissements

Ne supprimez pas d'avertissement de cette règle sauf si le design nécessite absolument plus de deux paramètres de type. 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.

Exemple

L'exemple suivant montre une classe qui définit trois paramètres de type générique qui enfreignent la règle.

Imports System     

Namespace Samples

    ' Violates this rule 
    Public Class Tuple(Of T1, T2, T3)
    End Class

End Namespace

using System;

namespace Samples
{
    // Violates this rule   
    public class Tuple<T1, T2, T3>   
    {   
    }
}
using namespace System;

namespace Samples
{
    // Violaties this rule
    generic <typename T1, typename T2, typename T3>
    public ref class Tuple
    {
    };
}

Règles connexes

Les collections doivent implémenter l'interface générique

Ne pas déclarer de membres statiques sur les types génériques

Ne pas exposer de listes génériques

Ne pas imbriquer les types génériques dans les signatures de membre

Les méthodes génériques doivent fournir le paramètre de type

Utiliser des instances du gestionnaire d'événements génériques

Utiliser des classes génériques lorsque nécessaire

Voir aussi

Référence

Génériques (Guide de programmation C#)