Share via


Übermäßige Anzahl von Parametern in generischen Typen vermeiden

Aktualisiert: November 2007

     TypeName

AvoidExcessiveParametersOnGenericTypes

CheckId

CA1005

Kategorie

Microsoft.Design

Unterbrechende Änderung

Breaking

Ursache

Ein extern sichtbarer generischer Typ hat mehr als zwei Typparameter.

Regelbeschreibung

Je mehr Typparameter ein generischer Typ enthält, desto schwieriger ist es, zu wissen und zu behalten, was die einzelnen Typparameter darstellen. In der Regel ist dies offensichtlich bei einem Typparameter, wie in List<T>, und in bestimmten Fällen auch bei zwei Typparametern, wie in Dictionary<TKey, TValue>. Mehr als zwei Typparameter hingegen bereiten den meisten Benutzern Schwierigkeiten, so beispielsweise TooManyTypeParameters<T, K, V> in C# oder TooManyTypeParameters(Of T, K, V) in Visual Basic.

Behandlung von Verstößen

Um einen Verstoß gegen diese Regel zu beheben, ändern Sie das Design dahingehend, dass nicht mehr als zwei Typparameter verwendet werden.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie keine Warnung dieser Regel, es sei denn, für das Design sind unbedingt mehr als zwei Typparameter erforderlich. Durch die Bereitstellung von generischen Typen in einer einfach zu verstehenden und verwendenden Syntax wird die Zeit, die Sie zum Erlernen benötigen, reduziert und die Übernahmerate neuer Bibliotheken erhöht.

Beispiel

Im folgenden Beispiel ist eine drei generische Typparameter definierende Klasse dargestellt, die gegen die Regel verstoßen.

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

Verwandte Regeln

Auflistungen müssen eine generische Schnittstelle implementieren

Statische Member nicht in generischen Typen deklarieren

Generische Listen nicht verfügbar machen

Generische Typen in Membersignaturen nicht schachteln

Generische Methoden müssen den Typparameter angeben

Generische Ereignishandlerinstanzen verwenden

Nach Möglichkeit Generika verwenden

Siehe auch

Referenz

Generika (C#-Programmierhandbuch)