Compartilhar via


Evitar o excesso parâmetros em tipos genéricos

TypeName

AvoidExcessiveParametersOnGenericTypes

CheckId

CA1005

Category (Categoria)

Microsoft.Design

Quebrando alterar

Quebrando

Causa

Um tipo genérico visível externamente tem mais de dois parâmetros de tipo.

Descrição da regra

Quanto mais digite parâmetros que contiver um tipo genérico, mais difícil é saber e lembre-se de que cada tipo de parâmetro representa.É óbvio geralmente com um tipo de parâmetro, sistema autônomo em List<T>e em determinados casos com dois parâmetros de tipo, sistema autônomo em Dictionary<TKey, TValue>. Se houver mais de dois parâmetros de tipo, a dificuldade se torna muito grande para a maioria dos usuários, por exemplo, TooManyTypeParameters<T, K, V> em translation from VPE for Csharp ou TooManyTypeParameters(Of T, K, V) no Visual Basic.

Como corrigir violações

Para corrigir uma violação dessa regra, altere o design para usar não mais que dois parâmetros de tipo.

Quando suprimir avisos

Elimina um aviso da regra, a menos que o design absolutamente requer mais de dois parâmetros de tipo.Fornecer genéricos em uma sintaxe que seja fácil de entender e usar reduz o time que é necessário para aprender e aumenta a taxa de adoção de novas bibliotecas.

Exemplo

O exemplo a seguir mostra uma classe que define os 3 parâmetros de tipo genérico que violam a regra.

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

Regras relacionadas

Coleções devem implementar a interface genérica

Não declarará membros estático tipos genéricos

Não expõem listas genéricas

Não se aninham tipos genéricos em assinaturas de membro

Métodos genéricos devem fornecer o parâmetro de tipo

Usar instâncias de manipulador do evento genérico

Use genéricos onde for apropriado

Consulte também

Referência

Generics (Guia de programação C#)