Поделиться через


Не используйте слишком много параметров в универсальных типах

Обновлен: Ноябрь 2007

TypeName

AvoidExcessiveParametersOnGenericTypes

CheckId

CA1005

Категория

Microsoft.Design

Критическое изменение

Критическое

Причина

Внешне видимый универсальный тип имеет более двух параметров типов.

Описание правила

Чем больше параметров типов содержит универсальный тип, тем сложнее знать и запоминать, что представляет каждый параметр типа. Это обычно становится очевидным при одном параметре типа, как в List<T>, и в ряде случаев при двух параметрах типов, как в Dictionary<TKey, TValue>. Если используется более двух параметров типов, большинство пользователей начинают испытывать большие трудности, например, TooManyTypeParameters<T, K, V> в C# или TooManyTypeParameters(Of T, K, V) в Visual Basic.

Устранение нарушений

Чтобы устранить нарушение этого правила, не используйте при разработке более двух параметров типов.

Отключение предупреждений

Не следует отключать предупреждение из этого правила, если просто необходимо использовать более двух параметров типов. Использование универсальных типов в синтаксисе, который легко понимать и использовать, сокращает время, необходимое для обучения, и ускоряет адаптацию новых библиотек.

Пример

В следующем примере показан класс, определяющий три параметра универсальных типов, что является нарушением этого правила.

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

Связанные правила

Коллекции должны реализовать универсальный интерфейс

Не объявляйте статические элементы в универсальных типах

Не следует раскрывать универсальные списки

Не вкладывайте универсальные типы в подписи членов

Универсальные методы должны предоставлять параметр типа

Используйте экземпляры обработчика универсальных событий

Используйте универсальные методы, если это уместно

См. также

Ссылки

Универсальные шаблоны (Руководство по программированию на C#)