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 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