Evite el exceso de parámetros en los tipos genéricos

Actualización: noviembre 2007

     TypeName

AvoidExcessiveParametersOnGenericTypes

Identificador de comprobación

CA1005

Category

Microsoft.Design

Cambio problemático

Motivo

Un tipo genérico visible externamente tiene más de dos parámetros type.

Descripción de la regla

Cuantos más parámetros type contenga un tipo genérico, más difícil resulta saber y recordar qué representa cada uno de ellos. Normalmente, esto resulta evidente con los parámetros de tipo, como en List<T>, y en algunos casos con dos parámetros de tipo, como en Dictionary<TKey, TValue>. Si hay más de dos parámetros de tipo, la dificultad es excesiva para la mayor parte de los usuarios, por ejemplo, TooManyTypeParameters<T, K, V> en C# o TooManyTypeParameters(Of T, K, V) en Visual Basic.

Cómo corregir infracciones

Para corregir una infracción de esta regla, cambie el diseño de modo que no se utilicen más de dos parámetros type.

Cuándo suprimir advertencias

No suprima ninguna advertencia de esta regla a menos que el diseño requiera absolutamente más de dos parámetros type. Al proporcionar genéricos con una sintaxis fácil de entender y utilizar se reduce el tiempo necesario de aprendizaje y se aumenta la velocidad de adopción de nuevas bibliotecas.

Ejemplo

En el ejemplo siguiente se muestra una clase que define tres parámetros de tipo genérico que infringen la regla.

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
    {
    };
}

Reglas relacionadas

Las colecciones deben implementar la interfaz genérica

No declare miembros estáticos en tipos genéricos

No exponga listas genéricas

No anide los tipos genéricos en firmas de miembro

Los métodos genéricos deben proporcionar el parámetro de tipo

Utilice instancias de control de eventos genéricas

Utilice genéricos cuando resulte apropiado

Vea también

Referencia

Genéricos (Guía de programación de C#)